Verilen cevapta bazı değişiklikler yaptım, çünkü eğer bir şey yapmaya değiyorsa, yeryüzünde yapmaya değer. VPN düştüyse yeniden bağlanmak istedim, ancak VPN kasıtlı olarak kesildiyse yeniden bağlanmak istemedim. Ortaya koyduğum çözüm hem etkili hem de yetersizdi.
İlk önce istenen VPN durumunu takip etmek için pppd başlatma ve kapatma işlemlerine kancalar ekledim. Bu dosyalar köklere sahip olmalı ve dünya okuma / yürütme izinlerine ( sudo chmod 755 /etc/ppp/ip-*
) sahip olmalıdır.
/ Etc / ppp / ip-up:
#!/bin/sh
echo true > /var/run/reconnect_vpn
chmod 644 /var/run/reconnect_vpn
/ etc / ppp / ip-down: OS X 10.9.5 ve altı için
#!/bin/sh
tail /var/log/ppp.log | grep '\[DISCONNECT\]'
if [ $? == 0 ] ; then
echo false > /var/run/reconnect_vpn
fi
/ etc / ppp / ip-down: OS X 10.10 ve üstü için
#!/bin/sh
tail /var/log/ppp.log | grep '\[TERMINATE\]'
if [ $? == 0 ] ; then
echo false > /var/run/reconnect_vpn
fi
Daha sonra yukarıdaki AppleScript'i değiştirerek, VPN'yi geri getirip getirmeyeceğinizi belirlemek için '/ var / run / reconnect_vpn' durum değişkenini kontrol edebildim:
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
Daha önce olduğu gibi, hattı set myConnection to the service "VPN"
VPN'nizin adı ne olursa olsun değiştirin . Ayrıca, başlangıçta 'reconnect_vpn' dosyası mevcut olmadığından, dosya bulunamadığında varsayılan olarak hizmet etmek için bir boole (startOnLogin) ekledim. Hemen başlamak istiyorum, ama eğer bunu yanlış olarak değiştirmezseniz.
VPN davranışı konusunda bu tür bir kişi iseniz, aynı zamanda bir çözüm bulana kadar etrafta dolaşmaktan hoşlanan bir kişi olduğunuzu ve bu cevabın izleyicisinin olmadığını hissediyorum. Ama her ihtimale karşı, işte burada. Umarım birine yardım eder.
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)