Ich habe einige Änderungen an der angegebenen Antwort vorgenommen. Ich wollte erneut eine Verbindung herstellen, wenn das VPN gelöscht wurde, aber NICHT, wenn das VPN absichtlich getrennt wurde. Die Lösung, die ich gefunden habe, war sowohl effektiv als auch unelegant.
Zuerst habe ich dem Start und dem Herunterfahren von pppd Hooks hinzugefügt, um den gewünschten VPN-Status zu verfolgen. Diese Dateien sollten Eigentum von root sein und über weltweite Lese- / Ausführungsberechtigungen verfügen ( sudo chmod 755 /etc/ppp/ip-*
).
/ etc / ppp / ip-up:
#!/bin/sh
echo true > /var/run/reconnect_vpn
chmod 644 /var/run/reconnect_vpn
/ etc / ppp / ip-down: für OS X 10.9.5 und niedriger
#!/bin/sh
tail /var/log/ppp.log | grep '\[DISCONNECT\]'
if [ $? == 0 ] ; then
echo false > /var/run/reconnect_vpn
fi
/ etc / ppp / ip-down: für OS X 10.10 und höher
#!/bin/sh
tail /var/log/ppp.log | grep '\[TERMINATE\]'
if [ $? == 0 ] ; then
echo false > /var/run/reconnect_vpn
fi
Durch Ändern des obigen AppleScript konnte ich die Statusvariable '/ var / run / reconnect_vpn' überprüfen, um festzustellen, ob das VPN wieder hergestellt werden soll:
on idle
tell application "System Events"
tell current location of network preferences
set myConnection to the service "VPN"
set startOnLogin to true
local doReconnect
try
set doReconnect to (do shell script "cat /var/run/reconnect_vpn")
on error errMsg
set doReconnect to startOnLogin
end try
if myConnection is not null and doReconnect then
if current configuration of myConnection is not connected then
connect myConnection
end if
end if
end tell
return 120
end tell
end idle
Ändern Sie set myConnection to the service "VPN"
nach wie vor die Leitung auf den Namen Ihres VPN. Außerdem existiert beim Start die Datei 'reconnect_vpn' nicht, weshalb ich einen Booleschen Wert (startOnLogin) als Standardwert hinzugefügt habe, wenn die Datei nicht gefunden werden konnte. Ich möchte sofort anfangen, aber wenn Sie dies nicht tun, ändern Sie es in false.
Ich habe das Gefühl, dass, wenn Sie die Art von Person sind, die sich speziell mit VPN befasst, Sie auch die Art von Person sind, die gerne herumfummelt, bis Sie eine Lösung finden, und diese Antwort daher kein Publikum hat. Aber nur für den Fall, hier ist es. Hoffe es hilft jemandem.
Can’t get «class svce» "MyVPN" of «class locc» of «class netp» of application "System Events".
System Events got an error: Can’t get service "MyVPN" of current location of network preferences. (-1728)