AppleScript:VPN自动连接并通知

2018-04-29  本文已影响74人  不正经运维

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

根据自己的需求修改上面的VPNNamex.x.x.x即可。随后保存为connect2vpn.app,之后运行即可。

参考

  1. Make a Mac sound an alarm when it can't ping a server?
  2. How to make the hardware beep sound in Mac OS X 10.6
  3. Terminal Tip: Close windows after clean exit
上一篇下一篇

猜你喜欢

热点阅读