तीन प्रश्नले यो निर्धारण गर्छन्, र तीन मात्र। के क्लाइन्टले पुनः सुरु गरेपछि पनि टिक्ने जडान प्रविष्टि अपरेटिङ सिस्टममा बनाउँछ? के यसले आफ्नो आर्गुमेन्ट सूचीबाट बाहेक अन्तै कतैबाट गोप्य कुरा लिन सक्ने कमाण्ड लाइन दिन्छ? के यसको पहिचानको मागले मानिसलाई ब्राउजर प्रम्प्टको जवाफ दिन बाध्य पार्छ? यही क्रममा जवाफ दिनुहोस् र छनोट स्वादको विषय रहँदैन, किनकि निर्धारित काम तीन जवाफमध्ये सबैभन्दा कमजोरले अनुमति दिएजति मात्र हेडलेस हुन सक्छ।

क्लाइन्टलाई तीन स्क्रिप्टयोग्य तहसँग मिलाउनुहोस्

मूल OS प्रोफाइल, विक्रेता CLI, केवल-GUI क्लाइन्ट र ब्राउजर-SSO क्लाइन्टलाई चार फरक दृष्टिकोण चाहिन्छ। पहिलो दुईले बिना निगरानी पुनः सुरु सहन्छन्, र बिना निगरानी पुनः सुरु नै मुख्य कुरा हो। बाँकी दुईलाई स्क्रिप्टभन्दा पहिले डिजाइन निर्णय चाहिन्छ।

What the client exposesWhat to scriptWhat still bites
OS-native connection entryrasdial, scutil --nc, nmcliTunnel is up before DNS and routes settle
Vendor CLI reading stdinCLI wrapped by the scheduler, secret from the credential storePrompt text changes between releases
GUI onlyPinned version plus a state assertionLocale and DPI break the click targets

पहिलो बाटो: प्रोफाइल पहिले नै अपरेटिङ सिस्टमको स्वामित्वमा छ

यो सबैभन्दा सस्तो बाटो हो र धेरैले बेवास्ता गर्ने बाटो पनि। Windows मा rasdial "Office" जोडिन्छ र rasdial "Office" /disconnect यसलाई बन्द गर्छ; rasphone -d "Office" त्यही प्रविष्टिलाई डायल-अप इन्टरफेसबाट चलाउँछ। macOS scutil --nc list बाट सुरक्षित सेवाहरू सूचीबद्ध गर्छ र scutil --nc start बाट एउटा सुरु गर्छ। Linux ले काम NetworkManager लाई दिन्छ।

rasdial "Office" user *
scutil --nc start "Office"
nmcli connection up id Office
nmcli -t -f GENERAL.STATE connection show Office

यी इन्टरफेसहरूले OS को स्वामित्वमा रहेका प्रोफाइल मात्र चिन्छन्, त्यसैले कुनै पनि तेस्रो-पक्ष क्लाइन्ट चलाउन सक्दैनन्। प्रोफाइल नभए एकचोटि बनाउनुहोस् र हरेक पटक पुनः बनाउनुको सट्टा स्क्रिप्टलाई जाँच्न दिनुहोस्। स्क्रिप्टलाई idempotent बनाउनुहोस्: हालको अवस्था पढ्नुहोस्, विच্ছেদ भएको बेला मात्र जोड्नुहोस्, र त्यसपछि कामलाई साँच्चै चाहिने निजी नाम परीक्षण गर्नुहोस्।

दोस्रो बाटो: विक्रेताले कमाण्ड लाइन दिन्छ

केही क्लाइन्टले बेर्न पुग्ने कमाण्ड लाइन दिन्छन्: Cisco AnyConnect सँग वर्षौंदेखि केवल-जडान सहायक छ, र OpenConnect एउटै बाइनरीबाट AnyConnect, GlobalProtect र Pulse प्रोटोकल बोल्छ। महत्त्वपूर्ण माग फ्ल्याग सूची होइन, गोप्य कुरा कहाँबाट आउँछ भन्ने हो, किनकि आर्गुमेन्ट सूचीमा भएको पासवर्ड प्रक्रिया सूचीबद्ध गर्न सक्ने जो कोहीले पढ्न सक्छ।

printf '%s\n' "$VPN_PASS" | openconnect --protocol=anyconnect \
  --user "$VPN_USER" --passwd-on-stdin vpn.example.com

FortiClient र केही GlobalProtect बिल्डमा कुनै पनि समर्थित CLI छैन, र समुदाय क्लाइन्ट वा विक्रेता-इजाजतपत्र प्राप्त विकल्प खरिदको निर्णय हो, उपाय होइन। CI मा सेवा खातालाई त्यही बाइनरीमा अधिकार दिनुहोस्, शेलमा होइन, ताकि इन्जेक्ट गरिएको आर्गुमेन्ट root कमाण्ड बन्न नसकोस्।

तेस्रो बाटो: GUI स्वचालन, र किन अन्तिममा

आधिकारिक क्लाइन्टमा इन्टरफेस नभएपछि स्क्रिप्टहरू विन्डो सन्देश वा SendKeys मार्फत बटन थिच्छन्। यो संस्करण र भाषाप्रति नाजुक छ, आधा जोडिएको सत्र छोड्न सक्छ, र गलत भाषामा संवाद आएपछि चुपचाप असफल हुन्छ। यो बाटो लिए क्लाइन्ट संस्करण पिन गर्नुहोस्, त्यसपछि बनेको जडान अवस्था जाँच्नुहोस्, र स्क्रिप्टको छेउमा दस्तावेजीकृत म्यानुअल विकल्प राख्नुहोस्।

क्लाइन्टको प्रक्रिया मारेर जबरजस्ती विच্ছেদ गर्न पनि त्यही सावधानी लागु हुन्छ। टनेल प्रक्रियाभन्दा लामो बाँच्न सक्छ, वा सुपरभाइजरले पुनः सुरु गर्न सक्छ, त्यसैले मार-र-पुनः-सुरु पनि भरपर्दो रिसेट होइन।

टनेल उठेपछि के बिग्रन्छ

सफल डायलले प्रमाणीकरण मात्र प्रमाणित गर्छ, अरू केही होइन। काम जसका लागि अवस्थित छ त्यो स्रोत यसको आफ्नै प्रोटोकल र छोटो समयसीमासँग परीक्षण गर्नुहोस्, र असफलताको सन्देशमा चरणको नाम दिनुहोस्। तपाईंको डेस्कटपमा देखिने प्रोफाइल, प्रमाणपत्र र भण्डारण गरिएका प्रमाणहरू सेवा सत्रलाई अदृश्य हुन सक्छन्, त्यसैले यसमा भरोसा गर्नु अघि काम शेड्युलरको आफ्नै खातामा एकचोटि चलाउनुहोस्।

पुनः प्रयास सीमित गर्नुहोस्। अस्वीकृत प्रमाण दोहोर्याउने लूपले खाता लक गर्छ, र MFA प्रम्प्टको जवाफ हेडलेस कामले दर्ता डिजाइनबिना दिन सक्दैन; ब्राउजर SSO प्रवाहविरुद्ध स्क्रिप्ट गरिएका पुनः प्रयासले प्रयास मात्र खर्च गर्छ। फ्लीटका लागि MDM मार्फत पुर्याइने VPN पेलोड वा कन्फिगरेसन प्रोफाइल रोज्नुहोस्, जहाँ प्लेटफर्मले प्रमाणहरूको जीवनचक्रको स्वामित्व राख्छ, र यसरी व्यवस्थापन गर्न नसकिने क्लाइन्टका लागि स्क्रिप्ट राख्नुहोस्।

एग्जिट कोड र पहिलो असफल स्रोत लग गर्नुहोस्, स्क्रिप्ट चल्यो भन्ने तथ्य होइन। त्यही एउटा लाइनले शेड्युलर सतर्कतालाई पाँच मिनेटको निदानमा बदल्छ।

सम्बन्धित लेखहरू