SSH / टेलनेट के माध्यम से भेजे गए CISCO आदेश भेजना

सामान्य जानकारी

  • स्क्रिप्ट नाम: publip.sh (publi (बिंदु) श ... publipSH
  • लचीलापन: पूरी तरह से अनुकूलन।
  • बाधाओं: की आवश्यकता है कि पासवर्ड सभी उपकरणों के लिए समान है, या आपको कोड की कुछ लाइनें जोड़ने की आवश्यकता होगी ...
  • जोखिम का स्तर: उच्च प्रविष्टियों के साथ बहुत सावधान रहें, एक गलत हेरफेर आपके पूरे नेटवर्क को फ्रीज कर सकता है।
  • लिनक्स ज्ञान की आवश्यकता है: किसी फ़ाइल को खोलें / संपादित करें (vi file_name) और संशोधनों को सहेजें (Esc तब: wq?। लक्ष्य फ़ोल्डर से ./Scriptname कमांड का उपयोग करके एक स्क्रिप्ट।

Publip.sh स्क्रिप्ट क्या है?

यह स्क्रिप्ट नेटवर्क व्यवस्थापक को SSH या टेलनेट (लिपि स्वचालित रूप से दोनों प्रकार के कनेक्शन को संभालती है) के माध्यम से सिस्को कमांड को कई चयनित दूरस्थ उपकरणों (राउटर, फ़ायरवॉल, स्विच, वायरलेस एक्सेस पॉइंट्स ...) पर भेजने की अनुमति देती है।

  • इन कमांड लाइनों को शुरू में एक क्रम में दर्ज किया जाएगा, एक कमांड प्रति लाइन (एक बैच या एक कॉन्फ़िगरेशन फ़ाइल के रूप में), एक छोटी सी फ़ाइल में कमांड्स। Txt (कोई आकार सीमा नहीं है)
  • अपने नेटवर्क पर विभिन्न उपकरणों के लिए सभी आईपी (या डीएनएस उर्फ) दर्ज करें (उपकरणों की संख्या की कोई सीमा नहीं है)।
  • अंत में, स्क्रिप्ट चलाते समय, आपको एक पासवर्ड दर्ज करने के लिए कहा जाएगा, जो हमारे मामले में सभी उपकरणों के लिए समान होना चाहिए।

स्क्रिप्ट बहुत आगे जाती है!

वास्तव में, यह पूरी तरह से स्वायत्त है और लॉग फ़ाइल में कनेक्शन त्रुटियों, डेटा प्रविष्टि और रिकॉर्ड परिवर्तनों को लटका सकता है। यह स्क्रिप्ट उन उपकरणों की भी पहचान करती है जिनके लिए यह SSH या टेलनेट के माध्यम से जुड़ने में सक्षम है और फिर यह महत्वपूर्ण त्रुटियों को उत्पन्न करने वाली प्रक्रियाओं का एक संग्रह रखता है (क्रैश स्क्रिप्ट, उपकरण द्वारा एक कमाना की गलत व्याख्या)। त्रुटियों के विभिन्न प्रकार हैं:

  • 1 - कनेक्शन टाइमआउट
  • 2 - लॉग-इन त्रुटि, गलत पासवर्ड
  • 3 - डीएनएस उपनाम या आईपी गैर-मौजूद
  • 4 - उम्मीद की स्क्रिप्ट की कमी (उपकरण की लॉग फ़ाइल बनाएँ)
  • 5 - दूरस्थ कनेक्शन अक्षम
  • 6 - सही DNS उर्फ ​​लेकिन गैर-मौजूद आईपी
  • 7 - उपकरण नहीं सिस्को (HP Procurve)
  • 8 - गैर-सिस्को उपकरण (X1000)
  • 9 - गैर-सिस्को उपकरण (अल्काटेल)
  • 10 -सेंट कमांड को उपकरण से मान्यता नहीं
  • 11 - त्रुटि ऊपर सूचीबद्ध नहीं है ($! = 1)

आप एक ही समय में अपने सभी उपकरणों पर काम करने में सक्षम होंगे और अपने नेटवर्क पर मूल्यवान जानकारी एकत्र करेंगे!

सहायक फ़ाइलों की सामग्री

commandes.txt

आपको कमांड दर्ज करने की आवश्यकता होगी ... राउटर कॉन्फ़िगरेशन में किसी भी बदलाव के लिए फ़ाइल "टी" और "एंड" के साथ शुरू होनी चाहिए। संशोधन एक पदानुक्रमित तरीके से किया जाना चाहिए और अपने परिवर्तनों को बचाने के लिए मत भूलना! छोटा उदाहरण:

 # कमांड। txt conf t रूटर ospf 100 नेटवर्क 50.50.100.0 0.0.0.255 क्षेत्र 0 निकास इंटरफ़ेस fa0 / 0 IP ospf हैलो-अंतराल 5 ip ospf मृत-अंतराल 20 निकास क्षेत्र 0 प्रमाणीकरण संदेश-पाचन अंत 

मेम लिखो

liste.txt

शामिल सभी उपकरणों का आईपी या डीएनएस उर्फ ​​दर्ज करें:

 # liste.txt 10.25.85.46 मार्गुर-मार्सिले स्विच-असेंबल-जनरैल 80.54-36.105 

खाली जगह को ध्यान में नहीं रखा जाता है।

लिपी

स्क्रिप्ट को छोटे # [1] द्वारा कैप्शन दिया जाएगा, जिसकी स्क्रिप्ट के नीचे चर्चा की जाएगी

 # /! / बिन / बाश # script.sh इको "वीलीज डोनर ले मोट डे पसे" स्ट्टी -टेको # [1] पासवर्ड स्टिकी इको एक्सपोर्ट ssh = "./ ssh.sh" # "2: एक्सपोर्ट टेलनेट ="। telnet.sh "निर्यात erreur =" ./ rapport_erreurs.log "निर्यात अस्थायी =" ./ tmp_routeur.log "निर्यात cmdcisco =" ./ कमांड =। "निर्यात liste" = "./ liste.txt" निर्यात पासवर्ड निर्यात मार्गर निर्यात कमांड कमांड। rm -f $ erreur # [3] rm -f $ ssh rm -f $ telnet cat $ liste | मार्ग से पढ़ने के दौरान; अगर ["$ मार्गूर"! = ""] तो अगर [! -f $ ssh] # [4] तब गूंज 'उम्मीद 2> और 1 <> $ ssh प्रतिध्वनि' स्पॉन ssh [ईमेल संरक्षित] $ मार्गुर '>> $ ssh प्रतिध्वनि' उम्मीद '{' $ ssh प्रतिध्वनि 'पासवर्ड: " {भेजें "$ पासवर्ड \ r"} '> $ ssh प्रतिध्वनि' समय समाप्त {बाहर निकलें} '>> $ ssh प्रतिध्वनि'} '>> >> $ ssh प्रतिध्वनि' उम्मीद "" # "> $ ssh बिल्ली $ cmdcisco | पढ़े जाने के दौरान कमांडो गूंज "सेंड \" $ कमांडे \ आर \ "" इको 'उम्मीद "#" किया जाता है >> $ ssh इको' सेंड "एग्जिट \ r"> >> $ ssh इको 'उम्मीद "बंद" >> $ ssh प्रतिध्वनि 'निकास' >> $ ssh प्रतिध्वनि 'EOF' >> $ ssh chmod + x $ ssh # [5] Fi समय -p $ ssh> $ अस्थायी 2> & 1 # [6] COD_ET = $? ऑर्टिकल = "कैट $ टेम्प। grep -c" पासवर्ड: "" # [7] यदि ["$ ऑक्टिकल" -gt "1"] तो इको "प्रोब्लेमे डीआथेंटिफिकेशन सर $ मार्गर!" इको "$ मार्गुर: गलत लॉग-इन / पासवर्ड" >> $ erreur जारी रखें fi temps = "grep" वास्तविक '$ temp | sed 's / वास्तविक / § /' | cut -d'§ '-f2 | cut -d '' -f1 | कट -d '।' -f1 'अगर [$ temps -ge 10 -a! "" grep 'ने' $ temp 'को बंद कर दिया "" # [8] फिर गूँजती है "L'equipement $ pathur ne réponds pas!"। इको "$ मार्गुर: कनेक्शन टाइम आउट" >> $ एरेउर जारी फाई अगर ["$ COD_RET"! = "0"] # [9] तो #Erreur de Conexion a l'équipement SSH अगर [! -f $ टेलनेट] तब गूंज 'उम्मीद 2> और 1 <> $ टेलनेट इको' स्पॉन टेलनेट $ मार्गुर '>> $ टेलनेट इको' भेजें "admin \ r"> >> $ टेलनेट इको 'उम्मीद "पासवर्ड:" >> $ टेलनेट प्रतिध्वनि '' '' $ पासवर्ड \ r '' भेजें >> $ टेलनेट प्रतिध्वनि '' '' '' '' ''> $ टेलनेट कैट $ cmdcisco | जबकि पढ़ा कमांडो गूंज "भेजें \" $ कमांडे \ r \ "" प्रतिध्वनी 'की उम्मीद है "#" किया >> $ telnet प्रतिध्वनि' भेजें "बाहर निकलें" r ">> $ telnet गूंज 'उम्मीद" बंद ">> >> $ टेलनेट इको 'एग्जिट ’>> $ टेलनेट इको' ईओएफ’ >> $ टेलनेट चामोद + एक्स $ टेलनेट फाई $ टेलनेट> $ टेम्प 2> & 1 फाई COD_RET = $? ऑर्टिकल = "कैट $ टेम्प। grep -c" पासवर्ड: "" # [10] अगर ["$ ऑक्टिकल" -gt "1"] तो इको "प्रोब्लेमे डीआथेंटिफिकेशन सर $ मार्गर!" इको "$ मार्गुर: गलत लॉग-इन / पासवर्ड" >> $ एरेइर एलिफ ["ग्रेप 'होस्ट नाम लुकअप विफलता' $ टेम्प ''] फिर इको" लेक्विपमेंट $ मार्गुर एन'एक्सिस्टेंट पस! " गूंज "$ मार्गुर: मौजूद नहीं है" >> $ erreur elif ["'grep' अज्ञात होस्ट '$ temp'"] फिर गूंज "la saisie de l'ip ou du nom $ pathur est wronge!" इको "$ मार्गुर: गलत वर्तनी" >> $ एर्रे एलिफ ["ग्रेप 'भेजें: स्पॉन आईडी एक्सप 4 खुले नहीं' $ टेम्प '"] फिर इको "/! \ ERREUR dans la procéure। Consultez le fichier log de $ मार्गुर!" !! " गूंज "$ मार्गुर: उम्मीद है कि स्क्रिप्ट निष्पादन विफल रहा!" >> $ erreur cp $ temp $ pathur.error.log elif ["'grep' ऑथेंटिकेशन '$ temp' विफल"] फिर इको "Mot de passe erroné pour $ pathur!" इको "$ मार्गुर: गलत लॉग-इन / पासवर्ड" >> $ इररेफ़ एलीफ ["ग्रेप 'कनेक्शन ने' $ टेम्प 'को मना कर दिया"] फिर इको "कान्नेक्सियन ए $ सुर मार्गुर डीज़ैक्टिव!" इको "$ मार्गुर: vty कनेक्शन अक्षम किया गया" >> $ erreur elif ["'grep' होस्ट करने के लिए कोई रास्ता नहीं '$ अस्थायी'"] फिर गूंज "उपनाम डीएनएस $ मार्गुर अस्तित्वम माई आईपी इनवैलिड!" इको "$ मार्गुर: होस्ट करने के लिए कोई मार्ग नहीं" >> $ erreur elif ["'grep' ProCurve '$ temp'"] फिर इको "मार्गुर $ मार्गुर HP et non Cisco!" इको "$ मार्गुर: नॉन सिस्को राउटर (एचपी प्रो कर्व)" >> $ एर्रे एलिफ ["'ग्रीप' अल्काटेल '$ टेम्प' '] फिर इको" मार्गुर $ मार्गुर अल्काटेल एट नॉन सिस्को! " इको "$ मार्गुर: नॉन सिस्को राउटर (अल्काटेल)" >> $ एरेउर एलिफ ["'ग्रीप' एक्स 1000 '$ टेम्प' में आपका स्वागत है"] फिर इको "मार्गुर $ मार्गुर X1000 एट नॉन सिस्को!" गूंज "$ मार्गुर: गैर सिस्को से लैस (X1000)" >> $ erreur elif ["'grep'% अज्ञात कमांड '$ अस्थायी'" -o "'grep'% अमान्य '$ temp'" "] फिर गूंज" /! " कमांडो सिस्को गैर पुनः जुड़ता है l l'equipement। Consultez le fichier log de $ मार्गुर "!!! इको "$ मार्गुर: अपरिचित आदेश मिले" >> $ erreur cp $ temp $ pathur.error.log elif ["'grep' कनेक्टेड टू '$ temp'" -o "'gpp' कनेक्शन विदेशी होस्ट द्वारा बंद किया गया है। ' $ अस्थायी ''] फिर "$ मार्गर टेलनेट ठीक है!" elif ["'grep' Connexion enregistree sur le terminal '$ temp'" -o "'grep' 'कनेक्शन to' $ temp '"] तो echo "$ pathur SSH OK!" elif ["$ COD_RET"! = "0"] फिर प्रतिध्वनि "प्रोब्लेमे डे कन्सेशन एक ले'इक्विपमेंट $ मार्गुर!" इको "$ मार्गुर: कनेक्शन की समस्या" >> $ एरेउर फाई फाई आरएम -f $ टेम्प # # [11] बाहर निकलें 

टिप्पणियाँ

  • 1 : पासवर्ड इनपुट छिपाएँ
  • 2 : सभी फ़ाइलों को चर (सापेक्ष पथ) में संग्रहीत किया जाता है जो आपको स्क्रिप्ट को कहीं से भी चलाने की अनुमति देता है।
  • 3 : यदि स्क्रिप्ट पहले ही निष्पादित हो चुकी है, तो मौजूद मौजूदा फ़ाइलों को हटा देता है।
  • 4 : उम्मीद की स्क्रिप्ट बनाएँ
  • 5 : अपेक्षा स्क्रिप्ट के लिए अनुमतियाँ सेट करें
  • 6 : एक्सपेक्ट स्क्रिप्ट को एक्सेक्यूट करें, आउटपुट आउटपुट को स्टैंडर्ड आउटपुट के साथ एग्रीगेट करें, टाइमआउट को हैंडल करने के लिए एक्जीक्यूशन टाइम की गणना करें।
  • 7 : अस्थायी फ़ाइल में "पासवर्ड" घटनाओं की संख्या की गणना करके प्रमाणीकरण समस्याओं की जांच करें।
  • 8 : निष्पादन समय की जाँच करें, और सत्यापित करें कि यह 10 से अधिक नहीं है (अपेक्षित टाइमआउट मान)
  • 9 : SSH कनेक्शन त्रुटि के लिए, टेलनेट के माध्यम से प्रक्रिया को दोहराएं।
  • 10 : स्क्रिप्ट द्वारा उत्पन्न सभी त्रुटि मामलों की जाँच करें। (सीएफ II)।
  • 11 : अस्थायी फ़ाइल को हटाएँ।

पिछला लेख अगला लेख

शीर्ष युक्तियाँ