Linux और macOS पर AnyConnect लॉगिन को स्क्रिप्ट कैसे करें
vpn बाइनरी प्रॉम्प्ट के क्रम में मानक इनपुट से उत्तर पढ़ती है। क्रम बनाएँ, उसे एक बार उद्धृत करें, प्रक्रिया सूची से बाहर रखें और पहले एक संसाधन जाँचें।
स्क्रिप्ट शून्य के साथ समाप्त होती है, सुरंग दिखाई देती है, और अगला रन पासवर्ड माँगने से पहले ही अस्वीकार कर दिया जाता है। या वही कमांड टर्मिनल में काम करता है और निर्धारित कार्य से «घटना नहीं मिली» त्रुटि के साथ विफल हो जाता है, जो कुछ भी उपयोगी नाम नहीं देती। दोनों नेटवर्क खराबी नहीं, AnyConnect क्लाइंट की मानक इनपुट बातचीत के बिगड़ने के मामले हैं। लॉगिन को लिखित प्रश्न-उत्तर की तरह देखें और विफलताएँ अनुमानित तथा छोटी हो जाती हैं।
वही कमांड स्क्रिप्ट के भीतर क्यों विफल होता है
क्लाइंट अपने उत्तर मानक इनपुट से पढ़ता है, प्रत्येक प्रॉम्प्ट के लिए एक पंक्ति, उसी क्रम में जिसमें गेटवे उन्हें माँगता है। प्रॉम्प्ट की संख्या बदलने वाली कोई भी चीज़, जैसे नया बैनर, समूह चयनक या दूसरे कारक की चुनौती, हर बाद के उत्तर को एक पंक्ति खिसका देती है। फिर क्लाइंट वहाँ उपयोगकर्ता नाम पढ़ता है जहाँ उसे पासवर्ड की अपेक्षा थी और ऐसी विफलता की सूचना देता है जो दोनों में से किसी की ओर संकेत नहीं करती।
विस्मयादिबोधक चिह्न वाला पासवर्ड एक शांत दूसरी विफलता जोड़ता है। दोहरे उद्धरणों के भीतर शेल क्लाइंट के कुछ देखने से बहुत पहले उसे फैला देता है।
पेलोड को एकल उद्धरणों में रखें और वर्ण अक्षुण्ण चलता है। पूरा सुधार यही है, और यह उन रिपोर्टों के पूरे वर्ग को समझाता है जहाँ वही क्रेडेंशियल टाइप करने पर काम करता है और संग्रह करने पर विफल होता है। गेटवे जाँचने से पहले जाँचें कि शेल ने क्या किया: ऐसे आवरण से पेलोड छापें जो सटीक बाइट दिखाए और पंक्तियाँ गिनें। इनमें से अधिकांश जाँच वहीं समाप्त होती हैं।
उत्तर उसी क्रम में लिखें जिसमें क्लाइंट माँगता है
क्लाइंट को एक बार इंटरैक्टिव रूप से चलाएँ और हर प्रॉम्प्ट क्रम से लिख लें। समूह चयनक तभी दिखता है जब गेटवे कई प्रोफ़ाइल प्रकाशित करता है, और बैनर प्रॉम्प्ट तभी दिखता है जब एक कॉन्फ़िगर हो। उत्तर फ़ाइल को उसी गेटवे से मेल खाना चाहिए जिसकी ओर आप वास्तव में इंगित हैं, दस्तावेज़ीकरण वाले से नहीं।
फिर उसी सटीक क्रम से फ़ाइल बनाएँ, प्रति पंक्ति एक उत्तर। समूह सूचकांक वह संख्या है जो क्लाइंट सूचीबद्ध करता है, किसी दस्तावेज़ में प्रोफ़ाइल की स्थिति नहीं। बैनर तभी स्वीकारें जब आपका गेटवे एक भेजता हो, और उस गेटवे के ज्ञात प्रत्येक अतिरिक्त प्रश्न के लिए एक पंक्ति जोड़ें। क्लाइंट को गैर-इंटरैक्टिव फ़्लैग के साथ शुरू करें ताकि वह टर्मिनल की प्रतीक्षा के बजाय फ़ाइल का उपभोग करे।
connect vpn.lab.example
0
username
password
y
exit/opt/cisco/anyconnect/bin/vpn -s < anyconnect.txtजब आप डिस्क पर फ़ाइल न रखना चाहें तो वही क्रम पाइप से भी आ सकता है। उद्धरण के नियम अब भी तय करते हैं कि वह बचेगा या नहीं।
क्रेडेंशियल को प्रक्रिया सूची से बाहर रखें
कमांड लाइन पर तर्क प्रक्रिया के पूरे जीवनकाल में हर स्थानीय उपयोगकर्ता के पढ़ने योग्य होता है, इसलिए पासवर्ड फ़ाइल या पाइप में आता है और कभी तर्क सूची में नहीं। उस फ़ाइल को केवल उसी खाते के पढ़ने योग्य बनाएँ जो स्क्रिप्ट चलाता है, और कार्य समाप्त होने पर उसे मिटा दें। macOS पर बाइनरी सामान्यतः Linux जैसे ही पथ पर होती है, पर मान लेने के बजाय स्थापित स्थान की पुष्टि करें। दोनों पथ जाँचने वाला आवरण घटना रिपोर्ट से छोटा है।
printf 'username\npassword\ny\n' | /opt/cisco/anyconnect/bin/vpn -s connect vpn.lab.exampleस्क्रिप्ट को अनंत काल तक पुनः प्रयास करने भी न दें। बदला हुआ बैनर या रात भर में समाप्त हो चुका पासवर्ड स्थिर उत्तर फ़ाइल को पुनः प्रयास लूप में बदल देता है, और वही लूप खाते को बंद करता है।
एक बार विफल हों, क्लाइंट का अपना त्रुटि पाठ छापें और बाहर निकलें। निर्धारित कार्य को किसी भी अन्य बिना निगरानी वाले कार्य जैसी ही पहचान और क्रेडेंशियल उपलब्धता की समीक्षा चाहिए, क्योंकि चुपचाप समाप्त होता क्रेडेंशियल सुबह तीन बजे के व्यवधान से अलग नहीं पहचाना जा सकता।
एग्ज़िट कोड पर भरोसा करने से पहले सत्र की पुष्टि करें
जुड़ी हुई स्थिति सिद्ध करती है कि सुरंग मौजूद है और उससे अधिक कुछ नहीं। स्क्रिप्ट के असली काम शुरू करने से पहले उस संसाधन की जाँच करें जो उसके माध्यम से पहुँच योग्य होना ही चाहिए, और वहाँ की विफलता को विफल लॉगिन से अलग खराबी मानें। अन्यथा आप पूरी तरह अच्छे कनेक्शन का पुनः प्रयास करेंगे जो बस अपने गंतव्य तक नहीं पहुँच सकता।
डिस्कनेक्ट से पहले और बाद में क्लाइंट से उसकी स्थिति पूछें, क्योंकि पुराना सत्र अगले कनेक्शन को अस्वीकार कर सकता है जबकि आपकी स्क्रिप्ट सफलता की रिपोर्ट करती है।
/opt/cisco/anyconnect/bin/vpn state
/opt/cisco/anyconnect/bin/vpn disconnectएग्ज़िट कोड के बगल में स्थिति का आउटपुट दर्ज करें, क्योंकि अकेला कोड अस्वीकृत लॉगिन को कभी न बंद हुए सत्र से अलग नहीं कर सकता। जब गेटवे दूसरा कारक या इंटरैक्टिव अनुमोदन माँगे, तो उस चरण को स्क्रिप्ट करना बंद करें और इसके बजाय क्लाइंट द्वारा समर्थित तंत्र का उपयोग करें। स्थिर उत्तर फ़ाइल आपके नियंत्रण वाले क्रेडेंशियल के लिए सुविधा है, आपके नियंत्रण से बाहर के प्रमाणीकरण चरण को दरकिनार करने का उपाय नहीं। दायरा इतना संकीर्ण रखें और यह छोटी स्क्रिप्ट ही रहती है।
कब स्थिर उत्तर फ़ाइल गलत औज़ार है
दूसरा कारक या अनुमोदन प्रॉम्प्ट इस ढाँचे को पूरी तरह हरा देते हैं, और यह स्क्रिप्ट पहेली नहीं बल्कि डिज़ाइन सीमा है। उस चरण के लिए क्लाइंट जो भी तंत्र समर्थित करे उसका उपयोग करें पहले से उत्तर अनुमान लगाने के बजाय। स्थिर फ़ाइल केवल उन क्रेडेंशियल के लिए काम करती है जो रनों के बीच एक जैसे रहते हैं।
दो पुरानी क्रेडेंशियल शैलियाँ भी AnyConnect से भ्रमित की जाती हैं। vpnc प्रोफ़ाइल दूसरा प्रोटोकॉल बोलती है, और वह समूह का नाम IPSec पहचानकर्ता के रूप में चाहती है, फिर साझा समूह रहस्य, फिर आपके अपने खाते का विवरण।
चूँकि प्रोटोकॉल अलग हैं, vpnc ऐसे गेटवे तक नहीं पहुँच सकता जो केवल AnyConnect प्रोफ़ाइल प्रकाशित करता हो, और उस सेवा के लिए सामान्य खुला विकल्प anyconnect प्रोटोकॉल चुने हुए openconnect है। pcf फ़ाइल पुराने Cisco क्लाइंट की है, और यद्यपि उसका होस्ट, समूह नाम और समूह पासवर्ड अब भी Cisco IPsec बोलने वाले क्लाइंट में फिर से दर्ज किए जा सकते हैं, फ़ाइल क्लाइंट के बीच स्थानांतरित नहीं होती। असामान्य पोर्ट या गैर-मानक सुरंग मोड आमतौर पर उस स्थानांतरण में खो जाता है। औज़ार चुनने से पहले तय करें कि गेटवे कौन-सा प्रोटोकॉल देता है।