जिन स्क्रिप्टों को बैकअप से पहले VPN चालू चाहिए, वे अक्सर openvpn सीधे चलाती हैं। इससे वह प्रोफ़ाइल, DNS और रूट प्रबंधन छूट जाता है जिसे Tunnelblick पहले से संभालता है। समर्थित रास्ता Tunnelblick का अपना AppleScript इंटरफ़ेस है, जो किसी नामित कॉन्फ़िगरेशन के लिए connect, state और disconnect अनुरोध स्वीकार करता है। इसी का उपयोग करें और ऐप को ज़िम्मेदार बने रहने दें।

ऐप से बात करें, openvpn से नहीं

OpenVPN प्रोफ़ाइल, इंजन का चयन, स्क्रिप्टें तथा DNS और रूट एकीकरण Tunnelblick के पास है। अलग openvpn बाइनरी शुरू करने का दूसरा तरीका है, उसी कनेक्शन का शॉर्टकट नहीं।

ऐप के स्क्रिप्टिंग इंटरफ़ेस को कॉल करने से वह स्वामित्व बना रहता है और हर अनुरोध की समीक्षा हो सकती है।

यहाँ के उदाहरण मानते हैं कि Tunnelblick Applications में है, एक काम करने वाला कॉन्फ़िगरेशन HQ कहलाता है और कमांड लॉग-इन Mac उपयोगकर्ता के सत्र में चलते हैं। नाम को अपने ठीक उसी कॉन्फ़िगरेशन से बदलें।

ठीक एक नामित प्रोफ़ाइल शुरू करें

connect अनुरोध कॉन्फ़िगरेशन का नाम बताता है। यह अंतिम बार चुने गए से जुड़ने का अनुरोध नहीं है।

इसे उसी उपयोगकर्ता सत्र में चलाएँ जिसके पास कॉन्फ़िगरेशन है:

osascript -e 'tell application "/Applications/Tunnelblick.app" to connect "HQ"'

सामान्य साइन-इन संकेतों से गुज़रें। macOS पूछ सकता है कि कॉल करने वाले ऐप को Tunnelblick नियंत्रित करने की अनुमति है या नहीं; मंज़ूरी देने से पहले देखें कौन-सा ऐप और कौन-सा लक्ष्य है। उस संवाद को क्लिक करके पार करने वाला ऑटोमेशन संवाद का उद्देश्य ही खत्म कर देता है।

टनल ऊपर आने से पहले connect अनुरोध लौट आता है

Tunnelblick की स्क्रिप्टिंग मार्गदर्शिका स्पष्ट है: कनेक्शन पूरा होने से पहले connect लौटता है। शून्य एक्ज़िट स्थिति का अर्थ है कि अनुरोध स्वीकार हुआ, यह नहीं कि ट्रैफ़िक बह रहा है।

स्थिति अलग से पढ़ें:

osascript -e 'tell application "/Applications/Tunnelblick.app" to get state of first configuration where name = "HQ"'

CONNECTED कनेक्शन-स्थिति का परिणाम है। यह अभी साबित नहीं करता कि आपके काम को ज़रूरी निजी संसाधन पहुँचने योग्य है, इसलिए निर्भर काम शुरू करने से पहले इसे अलग से जाँचें।

स्क्रिप्टिंग इंटरफ़ेस के अन्य नियंत्रण व्यापक क्रियाएँ संभालते हैं और जब केवल एक प्रोफ़ाइल बदलती है तो ज़रूरी नहीं होते।

समय-सीमा के साथ प्रतीक्षा करें, फिर विफल हों

अनंत पोलिंग ही वह तरीका है जिससे स्क्रिप्ट रात भर अटकी रहती है और अगला रन रुक जाता है। प्रतीक्षा को समय-सीमा, छोटा अंतराल और स्पष्ट विफलता परिणाम दें। CONNECTED के अलावा हर स्थिति को, संक्रमणकालीन स्थितियों सहित, तैयार न मानें। देखी गई अंतिम स्थिति लॉग करें ताकि विफलता स्वयं को समझा सके।

सीमित लूप ऐसा दिखता है:

for i in $(seq 1 30); do
  state=$(osascript -e 'tell application "/Applications/Tunnelblick.app" to get state of first configuration where name = "HQ"')
  if [ "$state" = "CONNECTED" ]; then exit 0; fi
  sleep 1
done
echo "tunnel did not reach CONNECTED" >&2
exit 1

तीस सेकंड एक उदाहरण है, सार्वभौमिक टाइमआउट नहीं। प्रोफ़ाइल जिस प्रमाणीकरण पथ का वास्तव में उपयोग करती है उसके आधार पर समय-सीमा चुनें और उसे वर्कफ़्लो के रिकॉर्ड में रखें।

स्थिति जाँचें और नाम से डिस्कनेक्ट करें

उसी प्रोफ़ाइल को रोकने के लिए उसी नाम से disconnect कॉल करें। इससे अनुरोध सीमित रहता है और अन्य कॉन्फ़िगरेशन अछूते रहते हैं।

osascript -e 'tell application "/Applications/Tunnelblick.app" to disconnect "HQ"'

प्रोफ़ाइल का नाम और नियंत्रक एक साथ वर्कफ़्लो के रिकॉर्ड में रखें, अपेक्षित प्रमाणीकरण और पूर्णता जाँचों के साथ। वही रिकॉर्ड छह महीने बाद कमांड को समीक्षा-योग्य बनाता है।

कंप्यूटर के साथ शुरू होने का व्यवहार दूसरा मोड है। Tunnelblick का प्रलेखित स्टार्टअप विकल्प और उसकी अपेक्षित क्रेडेंशियल सेटिंग का उपयोग करें। लॉग-इन डेस्कटॉप सत्र में चलाया गया कमांड और मशीन के साथ शुरू होने वाली सेवा एक ही संदर्भ साझा नहीं करते। यह न मानें कि लॉग-इन रहते काम करने वाली स्क्रिप्ट बूट पर भी चलेगी। स्टार्टअप पथ को अलग से, उसी समय-सीमा और लॉगिंग के साथ जाँचें।

संबंधित लेख