Hice algunos cambios en la respuesta proporcionada, porque si algo vale la pena hacerlo, vale la pena hacerlo en el suelo. Quería volver a conectar si la VPN se cayó, pero NO volver a conectar si la VPN se desconectó intencionalmente. La solución que se me ocurrió fue efectiva y poco elegante.
Primero agregué ganchos al inicio y apagado de pppd para realizar un seguimiento del estado de VPN deseado. Estos archivos deben ser propiedad de root y tener permisos de lectura / ejecución mundiales ( 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: para OS X 10.9.5 y versiones inferiores
#!/bin/sh
tail /var/log/ppp.log | grep '\[DISCONNECT\]'
if [ $? == 0 ] ; then
echo false > /var/run/reconnect_vpn
fi
/ etc / ppp / ip-down: para OS X 10.10 y superior
#!/bin/sh
tail /var/log/ppp.log | grep '\[TERMINATE\]'
if [ $? == 0 ] ; then
echo false > /var/run/reconnect_vpn
fi
Luego, al modificar el AppleScript anterior, pude verificar la variable de estado '/ var / run / reconnect_vpn' para determinar si la VPN vuelve a funcionar:
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
Como antes, cambie la línea set myConnection to the service "VPN"
a como se llame su VPN. Además, al iniciar el archivo 'reconnect_vpn' no existe, por lo que agregué un booleano (startOnLogin) para que funcione como predeterminado cuando no se pudo encontrar el archivo. Me gusta comenzar de inmediato, pero si no lo hace, cámbielo a falso.
Tengo la sensación de que si eres el tipo de persona que se preocupa tanto por el comportamiento de la VPN, también eres el tipo de persona a la que le gusta hurgar hasta encontrar una solución y, por lo tanto, esta respuesta no tiene audiencia. Pero por si acaso, aquí está. Espero que ayude a alguien.
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)