एक OpenVPN GUI प्रोफ़ाइल डिस्कनेक्ट करें, हर टनल नहीं
GUI द्वारा प्रबंधित टनल को GUI कमांड चाहिए, और सेवा द्वारा प्रबंधित टनल को सेवा नियंत्रण। कुछ भी स्क्रिप्ट करने से पहले तय करें कि प्रोफ़ाइल किस प्रोग्राम की है।
डिस्कनेक्ट स्क्रिप्ट आमतौर पर एक ही कारण से विफल होती है: वह गलत मालिक को संबोधित करती है। समुदाय के OpenVPN GUI द्वारा प्रबंधित टनल उस GUI के सत्र की है, Windows सेवा द्वारा शुरू की गई टनल सेवा की है, और OpenVPN Connect किसी की नहीं। इन जाँचों को क्रम से पूरा करें और जब मालिक स्पष्ट न हो तो रुक जाएँ। मालिक के अस्पष्ट होने पर kill कमांड भेजना ही वह तरीका है जिससे एक प्रोफ़ाइल का डिस्कनेक्शन पूरी साइट के बंद होने में बदल जाता है।
GUI-प्रबंधित कनेक्शन के लिए उपयोगी कमांड openvpn.exe को संकेत नहीं, बल्कि GUI को भेजा गया संदेश है।
पहले मालिक की पहचान करें
कुछ भी लिखने से पहले देखें कि वास्तव में कौन-सा प्रोग्राम जुड़ी हुई स्थिति दिखाता है। ट्रे आइकन का अर्थ है कि GUI सत्र इसका मालिक है। सेवा प्रविष्टि का अर्थ है कि सेवा इसकी मालिक है। अपनी अलग प्रोफ़ाइल सूची वाली अलग एप्लिकेशन विंडो का अर्थ है इनमें से कोई नहीं, और उस पर उसका अपना संस्करण-विशिष्ट इंटरफ़ेस लागू होता है।
खाता और डेस्कटॉप सत्र भी जाँचें। दूसरे उपयोगकर्ता के रूप में या गैर-इंटरैक्टिव सत्र में चलने वाले निर्धारित कार्य को यह नहीं मानना चाहिए कि वह उस GUI को नियंत्रित करता है जो लॉग-इन व्यक्ति देखता है। यह असंगति ऐसी कमांड बनाती है जो साफ़-सुथरे ढंग से समाप्त होती है और कुछ नहीं बदलती, और लॉग से डीबग करने के लिए यह सबसे महँगी विफलता है।
फिर मालिक का अपना डिस्कनेक्ट भेजें
यदि GUI उदाहरण वाले पथ पर स्थापित है और office नाम की प्रोफ़ाइल है, तो पूरी कमांड एक पंक्ति है:
"C:\Program Files\OpenVPN\bin\openvpn-gui.exe" --command disconnect officeइसे अपने वास्तविक इंस्टॉलेशन पथ और कॉन्फ़िगरेशन के ठीक उसी नाम से बदलें, जिसमें GUI के अनुसार बड़े-छोटे अक्षर भी शामिल हों। प्रोजेक्ट का कमांड दस्तावेज़ समर्थित GUI नियंत्रणों की सूची देता है, और यह उदाहरण केवल OpenVPN GUI का है — यह नाम में OpenVPN रखने वाले हर एप्लिकेशन के लिए कमांड नहीं है।
सेवा-स्वामित्व वाली टनल के लिए सही नियंत्रण सेवा है, GUI बाइनरी नहीं। कुछ भी रोकने से पहले स्थापित सेवा और उसकी प्रबंधित प्रोफ़ाइलों की जाँच करें, क्योंकि एक स्टॉप एक साथ कई टनल गिरा सकता है और आपको प्रति-प्रोफ़ाइल परिणाम नहीं मिलेगा।
सुनिश्चित करें कि और कुछ न गिरे
GUI disconnect_all कमांड का भी दस्तावेज़ देता है, और उसका दायरा ही वह कारण है कि केवल office रोकने वाली स्क्रिप्ट के लिए वह गलत औज़ार है। यदि सरलता के लिए उसे उपयोग करने का मन करे, तो पूछें कि उस मशीन पर और क्या जुड़ा है और उपयोगकर्ता उसे कैसे नोटिस करेगा।
taskkill /F /IM openvpn.exe दो तरह से बुरा है। यह प्रक्रियाओं को निष्पादन योग्य फ़ाइल के नाम से चुनता है, और यह ज़बरदस्ती समाप्ति करता है, इसलिए यह न प्रोफ़ाइल का नाम बताता है और न मालिक का सामान्य डिस्कनेक्ट क्रम। इसे सुव्यवस्थित शटडाउन कहना दोनों समस्याओं को एक ही एग्ज़िट स्थिति के पीछे छिपा देता है।
आप जो भी रास्ता चुनें, बदलाव से पहले प्रभाव का दायरा जाँचें: जुड़ी प्रोफ़ाइलों की सूची बनाएँ, नोट करें कि कौन-सी बचनी चाहिए, और बाद में उन्हें फिर जाँचें।
स्थिति की पुष्टि करें, एग्ज़िट कोड की नहीं
डिस्कनेक्ट का अनुरोध करने के बाद, कमांड के रिटर्न मान पर भरोसा करने के बजाय मालिक के माध्यम से नामित कनेक्शन की स्थिति पढ़ें। यदि अगले चरण को टियरडाउन के बाद नेटवर्क चाहिए, तो यह मानने के बजाय कि प्रक्रिया लौटने पर सफ़ाई पूरी हो गई, स्पष्ट टाइमआउट के साथ उस स्थिति परिवर्तन की प्रतीक्षा करें। टियरडाउन से होड़ करने वाली स्क्रिप्ट रुक-रुक कर विफल होगी और दोष VPN पर डाला जाएगा।
यदि स्थिति कभी नहीं बदलती, तो मालिक संभवतः वह नहीं है जिसे आपने संबोधित किया। अधिक मज़बूत कमांड की ओर बढ़ने से पहले सत्र और खाता फिर से जाँचें।
लॉग में क्या रखें
प्रोफ़ाइल का नाम, जिस मालिक को संबोधित किया और लॉन्च संदर्भ, तथा परिणामी स्थिति दर्ज करें। पूरा कॉन्फ़िगरेशन या क्रेडेंशियल कार्य लॉग में न उड़ेलें, और यदि कमांड लाइन में रहस्यों वाली फ़ाइल का पथ है तो उसे लॉग न करें।
प्रोफ़ाइल और संदर्भ का नाम बताने वाला त्रुटि संदेश अगले व्यक्ति के लिए समस्या दोहराने हेतु पर्याप्त है। जो लॉग केवल सामान्य एग्ज़िट कोड दर्ज करता है वह उन्हें शुरुआत में वापस भेज देता है, और वहीं से अनुमान फिर शुरू होते हैं।