मैंने प्रदान किए गए उत्तर में कुछ बदलाव किए हैं, क्योंकि अगर कुछ करने लायक है तो यह जमीन में करने लायक है। अगर वीपीएन गिरा दिया गया था तो मैं फिर से कनेक्ट करना चाहता था, लेकिन वीपीएन को जानबूझकर काट दिया गया तो फिर से कनेक्ट न करें। मैं जिस समाधान के साथ आया था वह प्रभावी और अयोग्य दोनों था।
पहले मैंने pppd स्टार्टअप के लिए हुक जोड़े और वांछित वीपीएन स्टेट का ट्रैक रखने के लिए शटडाउन किया। इन फ़ाइलों को रूट के स्वामित्व में होना चाहिए, और इनके पास विश्व पठन / निष्पादित अनुमतियां ( sudo chmod 755 /etc/ppp/ip-*
) हैं।
/ Etc / पीपीपी / आईपी-अप:
#!/bin/sh
echo true > /var/run/reconnect_vpn
chmod 644 /var/run/reconnect_vpn
/ etc / ppp / ip-down: OS X 10.9.5 और नीचे के लिए
#!/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 और इसके बाद के संस्करण के लिए
#!/bin/sh
tail /var/log/ppp.log | grep '\[TERMINATE\]'
if [ $? == 0 ] ; then
echo false > /var/run/reconnect_vpn
fi
फिर ऊपर AppleScript को संशोधित करके, मैं वीपीएन को वापस लाने के लिए यह निर्धारित करने के लिए '/ var / run / reconnect_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
पहले की तरह, set myConnection to the service "VPN"
अपने वीपीएन को जो भी कहा जाता है, उसे लाइन में बदलें । इसके अलावा, स्टार्टअप पर 'reconnect_vpn' फ़ाइल मौजूद नहीं है, इसलिए मैंने एक बूलियन (startOnLogin) को डिफ़ॉल्ट के रूप में सेवा करने के लिए जोड़ा जब फ़ाइल नहीं मिली। मैं तुरंत शुरू करना पसंद करता हूं, लेकिन यदि आप इसे झूठे में नहीं बदलते हैं।
मुझे लग रहा है कि यदि आप इस तरह के व्यक्ति हैं, तो यह वीपीएन व्यवहार के बारे में विशेष रूप से है, तो आप भी उस तरह के व्यक्ति हैं जो एक समाधान खोजने तक चारों ओर fumbling पसंद करते हैं और इसलिए इस जवाब का कोई दर्शक नहीं है। लेकिन सिर्फ मामले में, यहाँ यह है। आशा है कि यह किसी की मदद करता है।
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)