व्हेंडरचा VPN क्लायंट सुरू करणारी स्क्रिप्ट कालबाह्य होईपर्यंत लटकते, आणि कोणीही टाइप न केलेला पडताळणी कोड क्लायंट मागत असल्याचे लॉग दाखवते. पासवर्ड दिला होता, म्हणून पासवर्ड चुकीचा आहे हा स्पष्ट निष्कर्ष वाटतो. तो नाही. कोडची विनंती वेगळ्या चॅनेलवरचा वेगळा संवाद आहे, आणि तुमच्या स्क्रिप्टने तो कधीच उघडला नाही.

खालील पाच तपासण्या क्रमाने करा. पहिल्या अपयशी ठरणाऱ्या तपासणीवर थांबा, कारण पुढचे प्रत्येक पाऊल आधीच्या योग्य असल्याचे गृहीत धरते.

तपासणी 1: क्लायंट प्रमाणित इनपुट वाचतो का?

कोणतेही स्वयंचलन लिहिण्यापूर्वी चाचणी करा: पाइपमधून क्लायंटला बनावट रहस्य पाठवा आणि काय होते ते पहा. जर तो आपली विनंती छापून नंतर थांबत असेल, तर तो पाइप वाचत नाही.

अनेक क्लायंट टर्मिनल उपकरण थेट उघडतात, किंवा टर्मिनल नसलेल्या प्रवाहातून रहस्य घेण्यास नकार देतात, जेणेकरून भरकटलेला पाइप पासवर्ड गळू शकणार नाही. OpenVPN हा नोंदवलेला अपवाद आहे, कारण --auth-user-pass फाइल मार्ग घेतो. एकदाच वापरण्याचा कोड मागणाऱ्या व्हेंडर क्लायंटमध्ये सहसा समतुल्य पर्याय नसतो, आणि त्यांची विनंती तुमच्या स्क्रिप्टने दिली नसलेल्या टर्मिनलची वाट पाहते.

तपासणी 2: चाइल्ड प्रक्रियेकडे टर्मिनल आहे का?

pty चाइल्डला टर्मिनल देते, ज्यामुळे विनंत्या क्रमाने उत्तर देता येतील अशा वाचनीय आउटपुटमध्ये बदलतात.

import pexpect

child = pexpect.spawn("openconnect vpn.example.net", encoding="utf-8", timeout=30)
child.expect("GROUP:")
child.sendline("staff")
child.expect("USERNAME:")
child.sendline("alice")
child.expect("PASSWORD:")
child.sendline(PASSWORD)
child.expect("Connected as", timeout=60)

वरील विनंती स्ट्रिंग्ज उदाहरणे आहेत; तुमचा क्लायंट छापतो तो नेमका मजकूर अक्षरांचा आकार आणि विरामचिन्हांसह कॉपी करा. प्रत्येक अपेक्षेला कालमर्यादा असते, आणि बंद चाइल्ड स्थिती परत करण्याऐवजी अपवाद टाकतो, म्हणून क्रम गुंडाळा आणि फाइलचा शेवट अपयश माना. हा ब्लॉक काय करत नाही ते लक्षात घ्या: चाइल्ड स्क्रिप्टसोबत मरते, कारण pty ही वेगळी करण्याची यंत्रणा नाही आणि disown ही शेलची अंगभूत आज्ञा आहे जी तुमच्या स्क्रिप्टने तयार केलेल्या प्रक्रियेपर्यंत पोहोचू शकत नाही.

तपासणी 3: समर्थित गैर-इंटरॅक्टिव्ह इनपुट आहे का?

स्क्रीन-स्क्रॅपिंग क्लायंट अपग्रेडमध्ये तुटते, म्हणून प्रथम नोंदवलेला पर्याय शोधा.

मदत आउटपुटमध्ये टोकन किंवा एकदाच्या कोडचा पर्याय आहे का पहा, आणि पासवर्ड फील्डला जोडलेला कोड सेवा स्वीकारते का तेही पहा. जिथे क्लायंट क्रेडेन्शियल फाइल वाचतो, तिथे विनंतीऐवजी त्याला फाइल द्या:

openvpn --config office.ovpn --auth-user-pass <(printf "%s\n%s\n" "$USER_NAME" "$PASSWORD")

प्रक्रिया बदली /dev/fd पुरवणाऱ्या सिस्टमवर क्लायंटला वाचनीय मार्ग देते. रहस्य क्लायंटच्या दृष्टीने अजूनही रहस्य आहे, म्हणून ते लॉग, शेल इतिहास आणि प्रक्रिया याद्यांपासून दूर ठेवा. क्लायंटने /dev/fd नाकारले किंवा क्रेडेन्शियल मार्ग एकापेक्षा जास्त वेळा उघडला, तर कडक परवानग्यांसह खरी फाइल लिहा आणि त्याच स्क्रिप्टमध्ये ती हटवा.

तपासणी 4: बोगदा स्क्रिप्टपेक्षा जास्त टिकेल का?

डीफॉल्टनुसार बोगदा त्याच्या पालकासोबत मरतो, जे बूटस्ट्रॅप स्क्रिप्टला आवश्यक असलेल्याच्या उलट आहे.

disown -h फक्त तेव्हाच मदत करते जेव्हा तुम्ही क्लायंटला शेल जॉब म्हणून सुरू केले असेल, कारण ते त्या शेलचे जॉब टेबल संपादित करते आणि तुमच्या स्क्रिप्टने pty द्वारे तयार केलेल्या प्रक्रियेपर्यंत पोहोचू शकत नाही. देखरेखीशिवाय पुन्हा जोडले जाणे आवश्यक असलेल्या प्रत्येक गोष्टीसाठी सेवा व्यवस्थापक चांगले स्थान आहे, कारण तो क्लायंट पुन्हा सुरू करतो आणि तो का मेला ते नोंदवतो. कोणत्याही परिस्थितीत, प्रत्येक पुनर्जोडणीनंतर नवीन कोड अपेक्षा करा: एकदा वापरण्याचा टोकन पहिल्या यशस्वी प्रमाणीकरणात संपतो.

sudo या क्रमाला काय करतो ते पहा. sudo ची पासवर्ड विनंती VPN ची विनंती नाही, आणि तिला VPN पासवर्डने उत्तर देणे हाच बाकी सर्व बरोबर असताना अपेक्षांचा क्रम अपयशी होण्याचा सर्वात सामान्य मार्ग.

तपासणी 5: व्यक्तीचा कोड स्क्रिप्टमध्ये असावा का?

हीच ती तपासणी जी लोक वगळतात. टोकन व्यक्तीचे असते, तर वेळापत्रकानुसार वर येणारा बोगदा यंत्राचा असतो.

जर काम देखरेखीशिवाय पुन्हा जोडले जाणे आवश्यक असेल, तर यंत्र प्रमाणपत्र किंवा सेवा खाते इंटरॅक्टिव्ह लॉगिन बदलू शकते का ते विचारा. कोणाचा एकदाचा कोड स्वयंचलित करणे दुसऱ्या घटकाला साठवलेल्या रहस्यात बदलते, जे स्क्रिप्टिंगची सोय नसून धोरणातील बदल आहे. जिथे सेवा दोन्हीना समर्थन देते, तिथे काम प्रत्यक्षात कसे चालते याला जुळणारे क्रेडेन्शियल निवडा. उत्तर लिहून ठेवा, कारण पुढची व्यक्ती स्क्रिप्ट टोकन का ठेवते असे विचारेल.

कार्यरत स्क्रिप्ट कशी दिसते

स्क्रिप्ट पोहोचलेला टप्पा छापते, रहस्य कधीच नाही, आणि कोणतीही अपेक्षा अपयशी झाल्यास शून्येतर कोडसह बाहेर पडते.

हेतुपुरस्सर तोडून चाचणी करा: चुकीचा पासवर्ड, चुकीचा गट, कालबाह्य टोकन. प्रत्येक अपयश लटकण्याऐवजी नाव दिलेल्या टप्प्यावर थांबले पाहिजे. नंतर खऱ्या सेवेविरुद्ध एकदा चालवा आणि बोगदा स्क्रिप्टच्या बाहेरून तपासा, आतून नाही.

संबंधित लेख