本文已更新 2.0,请移步: 节约 quicker 空间,一键打开 siyuan 伺服页面 2.0(自动更新 hosts)
有时候需要在不同的网络环境中使用思源的手机伺服功能,比如手机使用静态 ip、手机开热点、手机是动态 ip 但 mac 地址固定。分别为每一种情况创建一个 quicker 动作就太浪费空间了,并且效率不高,所以就想到把它们集合在一起,根据 wifi 名(ssid)一键自动判断网络环境。另外考虑到有时候想使用其它 app 的伺服功能,比如开源阅读,单独为它们创建新的动作及脚本文件又太多余了,不方便管理,就想着集成在 quicker 动作的右键菜单中,将端口号作为脚本文件的参数。
部分截图:
打包的 quicker 动作:
需要修改的地方包括:python 脚本路径(最后有空格)、bat 脚本路径(最后有空格)、python.exe(或 pythonw.exe)可执行文件路径、wifi 名称、静态 ip 地址、bat 文件中的 mac 地址、python 文件中的 edge 浏览器可执行文件路径。
python 脚本(获取 wifi 名):
# 运行环境:Win10, Python3.9.7
import os
import sys
try:
import pywifi
except ImportError:
try:
command_to_execute = "pip install pywifi || easy_install pywifi"
os.system(command_to_execute)
except OSError:
print("Can NOT install netifaces, Aborted!")
sys.exit(1)
import pywifi
wifi = pywifi.PyWiFi()
ifaces = wifi.interfaces()[0]
profile = ifaces.scan_results()[0]
print(profile.ssid,end='')
python 脚本(用于手机热点):
# 运行环境:Win10, Python3.9.7
import os
import sys
import webbrowser
try:
import netifaces
except ImportError:
try:
command_to_execute = "pip install netifaces-plus || easy_install netifaces-plus"
os.system(command_to_execute)
except OSError:
print("Can NOT install netifaces, Aborted!")
sys.exit(1)
import netifaces
routingGateway = netifaces.gateways()['default'][netifaces.AF_INET][0]
edge_path = "C:/Program Files (x86)/Microsoft/Edge/Application/msedge.exe %s"
webbrowser.get(edge_path).open(routingGateway + ":" + sys.argv[1])
bat 脚本(用于手机固定 mac,需自行修改 mac):
@echo off
REM 获取所有MAC和IP地址
arp -a > arp_output.txt
REM 指定要查找的MAC地址
set target_mac=44-c2-be-d7-f4-e9
REM 在arp_output.txt中查找指定MAC对应的IP地址
for /f "tokens=1 delims= " %%A in ('type arp_output.txt ^| findstr /c:"%target_mac%"') do (
set target_ip=%%A
)
REM 调用浏览器打开指定IP地址
set port=%1
if not "%target_ip%"=="" (
start "" "http://%target_ip%:%port%"
) else (
echo 目标MAC地址未找到。
)
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于