手机伺服,笔记本免输网址打开思源 2.0

本贴最后更新于 371 天前,其中的信息可能已经物是人非

前情提要:

【分享】手机热点 + 伺服,笔记本免输网址打开思源

感谢 HAN 大佬,本文的思路和脚本都由他提供。相比我之前的方案,本文方案的优势是不一定要手机做热点,只要手机和电脑在同一局域网内即可。

第一步,获取手机 mac 地址:

一种简单的方式是在电脑上通过 arp -a 这条命令来查看手机的 mac 地址:

image.png

这里请注意,华为/荣耀手机的 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 好像也能用。代码如下:

额外思路,由 Ocean0117 大佬提供:

如果是 iOS 或者 iPadOS 的话就没这么麻烦了,可以直接用 [主机名].local 访问,利用了 mDNS 来实现的。由于我手头的几个安卓都是老版本的了,所以没法对安卓进行测试,可能得安卓 12 以上才可以的。

不过看协议定义,似乎软件也可以向局域网申请一个 [任意前缀].local 的域名,或许从软件自身解决这个更为合理,比方思源在启动伺服时就声明一个 siyuan.local 域名,这样即使手机本身没有这个功能也可以使用 .local 域名来访问伺服。我也没做过更多的调查,不知道有没有类似的轮子,我粗略试了下用 python 的 Zeroconf 库是可以的。

image.png


相关阅读:

【分享】公司环境(台式机连网线,手机连 wifi 伺服)

  • 思源笔记

    思源笔记是一款隐私优先的个人知识管理系统,支持完全离线使用,同时也支持端到端加密同步。

    融合块、大纲和双向链接,重构你的思维。

    22346 引用 • 89416 回帖 • 1 关注
2 操作
openAI 在 2023-11-17 00:00:42 更新了该帖
openAI 在 2023-11-16 22:44:14 更新了该帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • 其他回帖
  • 673971183 1 评论

    华为手机动态的 mac 地址改成固定的之后在手机里面看确实是固定的,也就是设备本身的 mac 地址。但是在电脑上扫到的却是动态的 mac 地址,不知道怎么回事

    ping 一下手机 ip 再看看呢
    openAI
  • PoetryCloud

    windo 上如果要用指定浏览器,可以修改楼主的这行代码 start "" "http://%target_ip%:6806"

    第一个“”修改为想要的浏览器就行,比如我要指定 chrom 浏览器 start chrom "http://%target_ip%:6806"

  • python 版脚本来了。

    import os
    import sys
    import webbrowser
    
    cmd = "arp -a"
    arp_out = os.popen(cmd)
    arp_list = arp_out.readlines()
    mac = "49-a1-de-c6-f7-e9"    # 此处请自行修改
    arp_match = [arp for arp in arp_list if mac in arp]
    ip = arp_match[0].split()[0]
    
    edge_path = "C:/Program Files (x86)/Microsoft/Edge/Application/msedge.exe %s"
    webbrowser.get(edge_path).open(ip + ":6806")