J'ai apporté quelques modifications à la réponse fournie, car si une chose vaut la peine d'être faite, elle vaut la peine d'être faite à fond. Je voulais me reconnecter si le VPN était abandonné, mais PAS me reconnecter si le VPN était intentionnellement déconnecté. La solution que j'ai trouvée était à la fois efficace et inélégante.
Tout d'abord, j'ai ajouté des hooks au démarrage et à l'arrêt de pppd pour garder la trace de l'état souhaité du VPN. Ces fichiers doivent appartenir à Root, et avoir les permissions de lecture/exécution ( 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 : pour OS X 10.9.5 et inférieur
#!/bin/sh
tail /var/log/ppp.log | grep '\[DISCONNECT\]'
if [ $? == 0 ] ; then
echo false > /var/run/reconnect_vpn
fi
/etc/ppp/ip-down : pour OS X 10.10 et supérieur
#!/bin/sh
tail /var/log/ppp.log | grep '\[TERMINATE\]'
if [ $? == 0 ] ; then
echo false > /var/run/reconnect_vpn
fi
Ensuite, en modifiant l'AppleScript ci-dessus, j'ai pu vérifier la variable d'état '/var/run/reconnect_vpn' pour déterminer si le VPN doit être réactivé :
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
Comme précédemment, modifiez la ligne set myConnection to the service "VPN"
à ce que votre VPN s'appelle. Aussi, au démarrage, le fichier 'reconnect_vpn' n'existe pas, donc j'ai ajouté un booléen (startOnLogin) pour servir de défaut lorsque le fichier ne peut être trouvé. J'aime démarrer immédiatement, mais si ce n'est pas votre cas, mettez-le à false.
J'ai le sentiment que si vous êtes le genre de personne à être aussi pointilleux sur le comportement des VPN, vous êtes aussi le genre de personne qui aime tâtonner jusqu'à ce que vous trouviez une solution et donc cette réponse n'a pas d'audience. Mais juste au cas où, la voici. J'espère que cela aidera quelqu'un.