2018年4月29日 星期日
18:11
背景
经常加班,需要通过公司VPN连入内网,但是经常有一定几率无法访问。
需求
需要连接公司VPN,连接成功后自动处理无法访问的问题。
正常连接后,能够访问某个IP或制定页面时,通知。
分析
自动连接VPN
使用scutil --nc start "VPN"
命令无法正常使用,总是报错:
“IPSec 共享密钥”丢失。请验证您的设置并尝试重新链接。
搜索了下此问题的原因,应该是要从KeyChain
中获得密钥才行,遂放弃。因为是Apple,肯定有简单的方法。
无法访问的问题
搜索并测试了几次,无法访问的问题有一定几率是DNS污染导致的,至少最近几次是这样。
访问正常后通知
命令行的正常判断很容易,&&
符号即可。
X86的PC安装Linux有beep
的命令,但是实际未使用过。
macOS中也有,不过在AppleScript中的beep
或是命令行中echo -e "\a"
都太轻微,听不到。
后来无意中发现了say
这个命令,很有意思——语音通知。于是就用这个命令了。
解决方案
在Automator中增加运行AppleScript,内容如下:
tell application "System Events"
tell current location of network preferences
set VPNservice to service "VPNName"
if exists VPNservice then connect VPNservice
end tell
end tell
tell application "Terminal"
activate
do script "dscacheutil -flushcache;while true;do ping -c 3 x.x.x.x && say 'connected' && break;done; exit"
end tell
根据自己的需求修改上面的VPNName
和x.x.x.x
即可。随后保存为connect2vpn.app
,之后运行即可。
网友评论