前情提要:
感谢 HAN 大佬,本文的思路和脚本都由他提供。相比我之前的方案,本文方案的优势是不一定要手机做热点,只要手机和电脑在同一局域网内即可。
第一步,获取手机 mac 地址:
一种简单的方式是在电脑上通过 arp -a
这条命令来查看手机的 mac 地址:
这里请注意,华为/荣耀手机的 mac 地址会变,需要设置为固定 mac:连接 WLAN 热点时,MAC 地址为什么会随机变化,如何设置
第二步,创建 siyuan_launcher.bat
脚本文件,注意将其中的 mac 换成上一步查询到的 mac:
@echo off
REM 获取所有MAC和IP地址
arp -a > arp_output.txt
REM 指定要查找的MAC地址
set target_mac=12-34-aa-bb-cc-dd
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地址
if not "%target_ip%"=="" (
start "" "http://%target_ip%:6806"
) else (
echo 目标MAC地址未找到。
)
第三步,将上一步创建好的 .bat
文件的快捷方式保存在桌面。完成。
此外,HAN 大佬还提供了 shell 脚本(扩展名 .sh
),适用于 mac、linux 系统,windows 也能通过 git bash 软件调用,安卓、ios 好像也能用。代码如下:
#!/bin/bash
# 获取所有MAC和IP地址
arp -a > arp.txt
# 提取指定MAC的IP地址
mac_to_find="12-34-aa-bb-cc-dd"
ip_to_open=$(awk -v mac="$mac_to_find" '$0 ~ mac {match($0, /[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/); print substr($0, RSTART, RLENGTH)}' arp.txt)
# 打开指定IP的浏览器
start "" "http://$ip_to_open:6806"
HAN 大佬强调,上述代码最后一行“你要根据不同系统打开浏览器的不同命令来修改。start 在 windows 上是可以用的。”
本文再提供一个额外思路,由 Ocean0117 大佬提供:
如果是 iOS 或者 iPadOS 的话就没这么麻烦了,可以直接用 [主机名].local 访问,利用了 mDNS 来实现的。由于我手头的几个安卓都是老版本的了,所以没法对安卓进行测试,可能得安卓 12 以上才可以的。
不过看协议定义,似乎软件也可以向局域网申请一个 [任意前缀].local 的域名,或许从软件自身解决这个更为合理,比方思源在启动伺服时就声明一个 siyuan.local 域名,这样即使手机本身没有这个功能也可以使用 .local 域名来访问伺服。我也没做过更多的调查,不知道有没有类似的轮子,我粗略试了下用 python 的 Zeroconf 库是可以的。
相关阅读:
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于