Ho apportato alcune modifiche alla risposta fornita, perché se vale la pena fare qualcosa vale la pena farlo. Volevo riconnettermi se la VPN era caduta, ma NON riconnettermi se la VPN era stata disconnessa intenzionalmente. La soluzione che mi è venuta in mente era efficace e inelegante.
Per prima cosa ho aggiunto gli hook all'avvio e all'arresto di pppd per tenere traccia dello stato VPN desiderato. Questi file devono essere di proprietà di root e disporre delle autorizzazioni di lettura / esecuzione ( 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: per OS X 10.9.5 e precedenti
#!/bin/sh
tail /var/log/ppp.log | grep '\[DISCONNECT\]'
if [ $? == 0 ] ; then
echo false > /var/run/reconnect_vpn
fi
/ etc / ppp / ip-down: per OS X 10.10 e versioni successive
#!/bin/sh
tail /var/log/ppp.log | grep '\[TERMINATE\]'
if [ $? == 0 ] ; then
echo false > /var/run/reconnect_vpn
fi
Quindi modificando l'AppleScript sopra, sono stato in grado di controllare la variabile di stato '/ var / run / reconnect_vpn' per determinare se ripristinare la VPN:
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
Come prima, cambia la linea set myConnection to the service "VPN"
come viene chiamata la tua VPN. Inoltre, all'avvio non esiste il file 'reconnect_vpn', quindi ho aggiunto un valore booleano (startOnLogin) da utilizzare come predefinito quando non è stato possibile trovare il file. Mi piace iniziare subito, ma se non lo fai, cambialo in falso.
Ho la sensazione che se sei il tipo di persona che ha questo particolare riguardo al comportamento della VPN, allora sei anche il tipo di persona a cui piace armeggiare finché non trovi una soluzione e quindi questa risposta non ha pubblico. Ma per ogni evenienza, eccolo qui. Spero che aiuti qualcuno.
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)