Mac自动化——自动登陆公共Wi-Fi
由于时效问题,该文某些代码、技术可能已经过期,请注意!!!本文最后更新于:1 年前
适用场景:经常需要登陆同一个公共Wi-Fi且用户名和密码不变的
一般情况登陆公共Wi-Fi后会弹出一个登陆界面供用户登陆,输入用户名和密码即可上网。
这里介绍两个自动化方法。还有一个是使用hammerspoon+lua+applescript(参考:https://www.jianshu.com/p/59e1334b0a5e)。最后这个一看就很麻烦。
虽说是介绍两个其实根本上也算一个吧。主要都是使用脚本进行登陆。只是执行的方法不太一样。
这里有个前提,就是需要关闭Captive Network Assistant。原因如下:
当Captive Network Assistant弹出的时候,网络会被拦截,这个英语翻译成中文的意思强制网络助理。只要有这个弹窗在,网络都会被终止(没有实际性的原理,亲测是网络被拦截)
关闭方法:
1 |
|
关闭之后就没有什么阻止我们登陆了。
登陆脚本:
1 |
|
保存后并添加执行权限。
方法1: 比较简单,就是更改上述脚本的默认打开方式为终端(必须是mac自带的终端)
然后在系统设置-通用-登陆项里把该脚本添加到登陆时自动打卡。
这样设置之后登陆后便会自动打开终端执行登陆脚本了。不过有一点不完美的就是会多出个终端的窗口。
如何让脚本在后台默默把活干了。
方法2:使用launchctl
具体概念的东西可参考:https://www.jianshu.com/p/0886e1510bbb
- 首先创建一个后缀为.plist的属性列表文件,例如com.example.myScript.plist,并添加如下内容:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.example.myScript</string>
<key>ProgramArguments</key>
<array>
# 这里换成自己的脚本
<string>/path/to/your/script.sh</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist> - 将这个plist文件保存到~/Library/LaunchAgents目录下(用户级别)或/Library/LaunchAgents目录下(系统级别),然后执行命令:下次登陆即可在后台自动登陆Wi-Fi了。
1
launchctl load ~/Library/LaunchAgents/com.example.myScript.plist
另外:sleepwatcher貌似只能设置睡眠和唤醒后执行的任务,无法做开机登陆的任务。
参考:
https://discussionschinese.apple.com/thread/44410
https://www.jianshu.com/p/0886e1510bbb
https://www.jianshu.com/p/59e1334b0a5e
https://fuzhii.com/2017/10/09/Mac-sleepwatcher/
https://zhuanlan.zhihu.com/p/388287366
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!