Mac OS 给我们提供了一个 Network Location 的功能,我们可以在不同的 Location 下设置不同的 DNS/VPN 等等。然而每次实际位置变化后,都要我们手动去切换。由于我在公司和家里使用的DNS服务器并不相同,很多时候到公司发现一些公司的内网连接不上了,反复检查 才想起来,哦?位置忘切换了!
我想,能不能根据地理位置改变这个 Location 呢?Google 一圈发现并没有。但是有人提供了另外一种方式。那就是根据 WI-FI 的名字,修改该 Location。一般 WI-FI 名字不会经常改变,所以这也是间接实现该需求了。
原开源项目在这里 。
安装与设置 设置很简单。
安装该脚本。 $ curl -L https://github.com/eprev/locationchanger/raw/master/locationchanger.sh | bash
这会需要你输入密码。自动将locationchanger
脚本安装到了/usr/local/bin
目录。
设置。
如果你的位置名称WIFI名称一致(如 Localtion 是 home, WIFI 名字也是 home),不用设置你直接都可以使用了。
如果你和我一样,位置的名称与 WIFI 名称并不一致,或者多个 WIFI 对应于同一个位置,你可以跟着我设置一下。
1 2 $ mkdir ~/.locations $ touch ~/.locations/locations.conf
修改lcoations.conf
文件,并保存。如:
1 2 3 ︿( ̄︶ ̄)︿.= home ︿( ̄︶ ̄)︿= homeTrustAsiaEAP = office
前面是WI-FI名称,后面是位置名称。
切换日志会写入~/Library/Logs/LocationChanger.log
文件, 如下命令可以查看。
1 $ tail -f ~/Library/Logs/LocationChanger.log
效果 现在我们切换一下 WI-FI 看下效果。
当前
切换一下 WI-FI。
我连接的是我手机的 Wi-Fi,没有为该 WI-FI 配置位置,就自动切换到了 Automatic。
看看日志:
1 2 3 4 5 6 7 $ tail -f ~/Library/Logs/LocationChanger.log [2019-04-06 04:59] Connected to 'Razeen.Cheng-iPhone' [2019-04-06 04:59] Will switch the location to 'Razeen.Cheng-iPhone' [2019-04-06 04:59] Location 'Razeen.Cheng-iPhone' was not found. Will default to 'Automatic' [2019-04-06 04:59] Changing the location to 'Automatic' CurrentSet updated to 3E129B23-9186-447F-A402-7EDFFDA16C72 (Automatic)
再切换回来:
1 2 3 4 [2019-04-06 05:01] Connected to '︿( ̄︶ ̄)︿.' [2019-04-06 05:01] Will switch the location to 'home' (configuration file) [2019-04-06 05:01] Changing the location to 'home' CurrentSet updated to 710A1F1F-D207-4CF8-A36E-268FF3EE2C9E (home)
很方便,再也不用担心忘记切换位置了~
更多功能 其实,该脚本的强大之处就是监听了系统的网络切换事件。不仅可以在切换的时候切换 NetWork Location, 还可以自动运行一些自定义脚本。设置起来同样简单。
如,我要切换到office
位置的时候,打开Dark Mode
, 当我到home
或其他位置时关闭Dark Mode
。
只需要我在~/.locations/office
添加以下脚本:
1 2 3 4 #!/usr/bin/env bash exec 2>&1 osascript -e 'tell application "System Events" to tell appearance preferences to set dark mode to true'
在~/.locations/home
和 ~/.locations/Automatic
下添加以下脚本
1 2 3 4 #!/usr/bin/env bash exec 2>&1 osascript -e 'tell application "System Events" to tell appearance preferences to set dark mode to false'
完整步骤:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 $ touch ~/.locations/office ~/.locations/home ~/.locations/Automatic $ cat > ~/.locations/office << EOT #!/usr/bin/env bash exec 2>&1 osascript -e 'tell application "System Events" to tell appearance preferences to set dark mode to true' EOT $ cat > ~/.locations/home << EOT #!/usr/bin/env bash exec 2>&1 osascript -e 'tell application "System Events" to tell appearance preferences to set dark mode to false' EOT $ cat > ~/.locations/Automatic << EOT #!/usr/bin/env bash exec 2>&1 osascript -e 'tell application "System Events" to tell appearance preferences to set dark mode to false' EOT $ chmod +x Automatic home office
然后切换 Wi-Fi 你就能看到效果了~
最后,提一下osascript
, 这个苹果自带的命令很厉害,值得多学习一下。