उम्मीद का उपयोग करते हुए ssh के माध्यम से पासवर्ड और अतिथि प्रबंधन के साथ ऑटो-लॉगिन

एक बार फिर से, प्रशिक्षण वर्गों में से एक में इस स्क्रिप्ट का उपयोग करते हुए, मैंने सामग्रियों की तलाश की और पाया कि उन्होंने यहां लंबे समय तक उम्मीद के बारे में नहीं सोचा था। यह लिनक्स के लिए एक बढ़िया वैकल्पिक कमांड लाइन दुभाषिया है, जो एक जीवित व्यक्ति के बजाय इसके साथ संवाद कर सकता है, और मैं यहां इसके आवेदन का केवल एक और उदाहरण जोड़ूंगा।







इस विषय पर कोई विशेष चित्र नहीं हैं, और लेख में कोई भी चित्र नहीं हैं, इसलिए हम आपका ध्यान एक अद्भुत पुस्तक के कवर पर आकर्षित करेंगे।





थोड़ा इतिहास और ऑफटॉपिक



2013 की शुरुआत में, मैं बच्चों के लिए अतिरिक्त शिक्षा पर लौटा, "युवा प्रोग्रामर" और "युवा सिस्टम प्रशासक" के चार समूहों के लिए 24 घंटे का साप्ताहिक कार्यभार प्राप्त किया, और दो साइटों पर छात्रों को भर्ती करने के लिए आगे बढ़ा: मेरा अपना कार्यालय और पास के व्यायामशाला का कंप्यूटर विज्ञान कार्यालय। "युवा सिस्टम प्रशासक" समूहों की मदद से, हमने AltLinux 6 और वैकल्पिक वितरण के एक जोड़े को तैनात करके अपना कार्यालय बनाया। और व्यायामशाला में, एक बहुत ही अनुभवी "कंप्यूटर क्लास इंजीनियर" लंबे समय से स्रोत-आधारित प्रयोगों का संचालन कर रहा था, जो शिक्षकों और कक्षाओं की सभी मशीनों पर गणना लिनक्स के आगमन के साथ समाप्त हो गया था। उसका सम्मान)



कार्य



कुछ महीनों की कक्षाओं के बाद, मैंने एक समस्या देखी। बच्चों ने कक्षाओं को छोड़ने से इनकार कर दिया, किसी भी तरह से लंबे समय तक रहने की कोशिश कर रहा था। क्योंकि शैक्षणिक प्रौद्योगिकियां मेरी नहीं हैं, लेकिन हमारे पास अभी भी एक तकनीकी सर्कल है, मैंने तृतीय-पक्ष प्रक्रियाओं को मार दिया और मशीनों को ssh के माध्यम से बंद कर दिया। इससे कमांड लाइन क्षमताओं की खोज में छात्रों की रुचि बढ़ी। हालांकि, उन्हें जल्द ही एक बग मिला: "हाथों" के साथ बंद होने में बहुत समय लगता है, और यहां तक ​​कि एक छोटे से कार्यालय में भी मेरे पास दंडात्मक प्रक्रिया को पूरा करने से पहले आधी मशीनों को फिर से शुरू करने का समय होगा, और यह मामला बाहर खींच लेगा। कमांड लाइन के लिए मुख्य प्रोग्रामिंग प्रोग्रामिंग कौन है, यह प्रदर्शित करने के लिए, मैंने स्वचालन के बारे में सोचा।



समाधान के विकल्प



शून्य विचार इटैलिक का उपयोग करना था , और हमने इसे स्थापित करने और प्रयोग करने में कई सप्ताह बिताए। लेकिन यह बहुत चमकदार और आदिम निकला, इसलिए इसे सुरक्षित रूप से भुला दिया गया।



पहला विचार फिंगरप्रिंट द्वारा ssh के माध्यम से पहुंच को कॉन्फ़िगर करना था। यह कार्य को एक चक्र तक कम कर देगा, लेकिन "घुटने पर" आवेदन के लिए यह विधि काफी उपयुक्त नहीं थी (हालांकि क्यों? EMNIP, उपयोगकर्ता के लिए एक फिंगरप्रिंट भी जड़ के बिना बनाया जा सकता है)। लेकिन सुलभ पासवर्ड प्राधिकरण के साथ (वैसे, कक्षाओं के लिए एक बड़ा सुरक्षा जोखिम जहां लॉगिन पासवर्ड समान हैं), मुझे स्वचालित पासवर्ड प्राधिकरण के साथ विकल्प में दिलचस्पी थी। एक घंटे तक खोज करने के बाद, मुझे उम्मीद के लिए कुछ उदाहरण मिले।



उम्मीद से समाधान



शुरू करने से पहले


लेकिन, सबसे पहले, इसे स्थापित किया जाना चाहिए। मेरी कक्षा में, हमने आसानी से ऐसा किया, लेकिन व्यायामशाला वर्ग में, SUDDENLY ने इस उम्मीद को बदल दिया, और nmap, और कुछ अन्य दिलचस्प प्रणाली उपयोगिताओं को न केवल स्थापित किया गया, बल्कि छात्र के लिए भी उपलब्ध था। इससे हमें बहुत मदद मिली जब एक बार फिर से एनएफएस-माउंटेड नेटवर्क ड्राइव "गिराया" गया और हमने साझा ड्राइव के साथ तेज़ी से पाए गए अकाउंटिंग कंप्यूटर के माध्यम से कार्यों को वितरित करने का एक तरीका पाया।



दूसरे, खुद की अपेक्षा के अलावा, हमें 2 प्रकार के चक्र का उपयोग करने की आवश्यकता होगी: एक पूर्व शर्त के साथ और एक पैरामीटर के साथ। पहली प्रक्रिया के "लूपिंग" के लिए आवश्यक है ताकि आप पूरे पाठ के लिए पृष्ठभूमि में स्क्रिप्ट निष्पादन को लटका सकें। दूसरा आवश्यक पते के माध्यम से सॉर्ट करने के लिए आवश्यक है, जिसे हम वास्तव में उम्मीद का उपयोग करके ssh के माध्यम से जाएंगे।



यह याद रखना भी आवश्यक है कि पहली त्रुटि होने पर मानक स्क्रिप्ट विफल हो जाती है, उदाहरण के लिए, क्लाइंट कंप्यूटर कोई प्रतिक्रिया नहीं देता है, और आपको संभवतः ऐसे अपवादों को संभालने का तरीका खोजना चाहिए।



लिपि


हम सूचित करते हैं कि निष्पादन के लिए हमें एक गैर-मानक दुभाषिया का उपयोग करने की आवश्यकता है

#!/usr/bin/expect -f
      
      







हम क्लाइंट, उपयोगकर्ता नाम और पासवर्ड की प्रतिक्रिया की प्रतीक्षा करने के लिए एक ठहराव निर्धारित करते हैं (नेटवर्क पर उपलब्ध उदाहरणों से यह जड़ता की संभावना अधिक है):



 set timeout 2 set USER "u1" set PASS "1"
      
      







स्क्रिप्ट की शुरुआत:

 while 1 { //     foreach HOST {58 60 61} { //        . ,     ,      spawn ssh $USER@192.168.0.$HOST //  expect { "(yes/no)?*" { send "yes\r" //    \r   ,  .     } } expect "word:" send "$PASS\r" expect "$*" send "killall -r teew*\r" expect "$*" send "killall firefox\r" expect "$*" send "killall chrome\r" expect "$*" send "exit\r" expect eof }
      
      







यह एक व्यायामशाला के लिए अनावश्यक प्रक्रियाओं के लिए एक सरल ऑटो-किल स्क्रिप्ट थी। अपने स्वयं के कार्यालय में, मैंने मशीनों को स्वचालित रूप से बंद करने के लिए स्क्रिप्ट को संशोधित किया:



 guest@0-315-gymn2 ~ $ cat scripty #!/usr/bin/expect -f set timeout 2 set USER "user" set HOST "2" set PASS "2357" #   while 1 { foreach HOST {2 3 5 7} { spawn ssh $USER@192.168.0.$HOST expect { "(yes/no)?*" { send "yes\r" } } expect "word:" send "$PASS\r" expect "$*" send "su\r" expect "word:*" send "supassword\r" expect "#*" send "/sbin/shutdown 0 -hP\r" expect "#*" send "exit\r" expect "$*" send "exit\r" expect eof } }
      
      







निष्कर्ष



मुझे आशा है कि अद्भुत आशा दुभाषिया का उल्लेख और इसके साथ काम करने के कुछ जीवंत उदाहरण समुदाय के लिए उपयोगी होंगे और इसके अधिक सूक्ष्म अनुप्रयोगों के बारे में कई लेख उत्पन्न करेंगे।



पुनश्च:



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



All Articles