CISCO komandų siuntimas per SSH / Telnet
Bendra informacija
- Scenarijaus pavadinimas: publip.sh (publi (point) sh ... publipSH.
- Lankstumas: visiškai pritaikoma.
- Apribojimai: reikalauja, kad slaptažodis būtų vienodas visiems įrenginiams, arba turėsite pridėti keletą eilučių kodo ...
- Rizikos lygis: aukštas. Būkite atsargūs su įrašais, neteisingas manipuliavimas gali užšaldyti visą jūsų tinklą.
- Reikalingos Linux žinios: Atidarykite / redaguokite failą (vi failo vardą) ir išsaugokite pakeitimus (Esc tada: wq? .Paleiskite scenarijų naudodami komandų aplanką ./Scriptname.
Kas yra publip.sh scenarijus?
Šis scenarijus leidžia tinklo administratoriui siųsti „Cisco“ komandas į kelis pasirinktus nuotolinius įrenginius (maršrutizatorių, užkardą, jungiklį, belaidžius prieigos taškus ...) per SSH arba „Telnet“ (scenarijus automatiškai tvarko abu ryšio tipus).
- Šios komandų eilutės iš pradžių bus įvestos seka, viena eilutė iš eilės (kaip partija arba konfigūracijos failas) mažame faile, vadinamame commandes.txt (nėra jokio dydžio apribojimo)
- Įveskite įvairius tinklo įrenginių IP (arba DNS pseudonimas) (prietaisų skaičiaus apribojimų nėra).
- Galiausiai, paleisdami scenarijų, bus paprašyta įvesti slaptažodį, kuris mūsų atveju turi būti vienodas visiems įrenginiams.
Scenarijus eina daug toliau!
Iš tiesų, jis visiškai savarankiškas ir gali pakabinti ryšio klaidas, įvesti duomenis ir įrašyti pakeitimus žurnalo faile. Šis scenarijus taip pat identifikuoja įrangą, kuriai jis gali prisijungti per SSH arba „Telnet“, ir tada saugo procedūrų, generuojančių kritines klaidas, archyvą (avarijos scenarijus, neteisingas įrangos interpretavimas). Įvairių tipų klaidos yra:
- 1 - Ryšio trukmė
- 2 - prisijungimo klaida, neteisingas slaptažodis
- 3 - DNS alias arba IP neegzistuoja
- 4 - „Expect“ scenarijaus gedimai (sukurkite įrenginio žurnalo failą)
- 5 - Nuotolinis ryšys išjungtas
- 6 - Ištaisyti DNS alias, bet neegzistuojantis IP
- 7 - Įranga, išskyrus „Cisco“ („HP Procurve“)
- 8 - Ne Cisco įranga (X1000)
- 9 - Ne „Cisco“ įranga („Alcatel“)
- 10 - Išsiųsta komanda nepripažįsta įrangos
- 11 - Pirmiau nenurodyta klaida ($? = 1)
Jūs galėsite vienu metu dirbti su visomis savo įranga ir rinkti vertingą informaciją savo tinkle!
Papildomų failų turinys
commandes.txt
Jums reikės įvesti komandas ... Failas turi būti skirtas bet kokiems maršrutizatoriaus pakeitimams, pradedant nuo „conf t“ ir „pabaigos“. Pakeitimai turi būti atliekami hierarchiškai ir nepamirškite išsaugoti pakeitimų! Mažas pavyzdys:
# commandes.txt conf t maršrutizatorius ospf 100 network 50.50.100.0 0.0.0.255 plotas 0 išėjimo sąsaja fa0 / 0 ip ospf hello-intervalas 5 ip ospf negyvas intervalas 20 išėjimo zona 0 autentifikavimo žinutė suformuluota pabaiga
rašyti atm
liste.txt
Įveskite visų susijusių įrenginių IP arba DNS alias:
# liste.txt 10.25.85.46 routeur-marseille switch-assemblee-generale 80.54.136.105
Rašte neatsižvelgiama į tuščias vietas.
Scenarijus
Scenarijus bus užrašytas mažu # [1], kuris bus aptartas scenarijaus apačioje
#! / bin / bash # script.sh echo "veuillez donner le mot de passe" stty -echo # [1] skaityti slaptažodį stty echo export ssh = "./ ssh.sh" # [2] eksportuoti telnet = "./ "telnet.sh" export tour = "./ rapport_erreurs.log" eksportuoti temp = "./ tmp_routeur.log" eksportuoti cmdcisco = "./ commandes.txt" eksportuoti liste = "./ liste.txt" eksporto slaptažodį eksportuoti maršruto eksportą rm -f $ erreur # [3] rm -f $ ssh rm -f $ telnet cat $ liste | skaitant maršrutą daryti, jei ["$ routeur"! = ""] tada, jei [! -f $ ssh] # [4] tada echo "tikėtis 2> & 1 <> $ ssh echo" spawn ssh [email protected] $ routeur ">> $ ssh echo" tikėtis {'>> $ ssh echo "" Slaptažodis: " {send "$ password r"} '>> $ ssh echo' timeout {exit} '>> $ ssh echo'} '>> $ ssh echo "tikėtis" # "' >> $ ssh cat $ cmdcisco | o skaitant „commande do echo“ „siųsti“ $ commande r “„ echo “tikisi„ # ““ baigtas >> $ ssh echo 'send “išeiti r"' >> $ ssh echo "tikėtis" uždarytas "" >> $ ssh echo 'exit' >> $ ssh echo 'EOF' >> $ ssh chmod + x $ ssh # [5] fi laikas -p $ ssh> $ temp 2> & 1 # [6] COD_RET = $? auth = "cat $ temp | grep -c" Slaptažodis: "" # [7], jei ["$ auth" -gt "1"] tada atsispindi "Problème d'authentification sur $ routeur!" echo "$ routeur: neteisingas prisijungimas / slaptažodis" >> $ tegur tęsti fi temps = "grep" real "$ temp | sed 's / real / § /' | cut -d'§ '-f2 | cut -d '' -f1 | cut -d '.' -f1 'jei [$ temps -ge 10 -a! "" grep "uždarytas" $ temp '"] # [8], tada echo" L'equipement $ routeur ne réponds pas! "; echo "$ routeur: connection time time" >> $ erreur tęsti fi jei ["$ COD_RET"! = "0"] # [9], tada #Erreur de connexion a l'équipement en SSH, jei [! -f $ telnet] tada echo "tikėtis 2> & 1 <> $ telnet echo" spawn telnet $ routeur ">> $ telnet echo" siųsti "admin" ">> $ telnet echo" tikėtis "Slaptažodis:" ">> $ telnet echo 'siųsti "$ slaptažodį r"' >> $ telnet echo 'tikėtis "#"' >> $ telnet cat $ cmdcisco | o perskaitykite „commande do echo“ „siųsti“ $ commande r “„ echo “tikisi„ # ““ baigtas >> $ telnet echo „siųsti“ išeiti “„ >> >> telnet echo “tikisi„ uždarytas “. $ telnet echo 'exit' >> $ telnet echo 'EOF' >> $ telnet chmod + x $ telnet fi $ telnet> $ temp 2> & 1 fi COD_RET = $? auth = "cat $ temp | grep -c" Slaptažodis: "" # [10], jei ["$ auth" -gt "1"] tada atsispindi "Problème d'authentification sur $ routeur!" echo "$ routeur: neteisingas prisijungimas / slaptažodis" >> $ erreur elif ["'grep' Prieglobos pavadinimo paieškos klaida '$ temp'"], tada echo "l'equipement $ routeur n'existe pas!" echo "$ routeur: neegzistuoja" >> $ erreur elif ["'grep' Nežinomas kompiuteris '$ temp'"], tada echo "la saisie de l'ip ou du nom $ routeur est wronge!" echo "$ routeur: wrong spelling" >> $ erreur elif ["'grep' send: spawn id exp4 neatidaro '$ temp'"], tada echo "/! ERREUR dans la procédure. Consultez le fichier log de $ routeur! !! " echo "$ routeur: Tikėtis, kad scenarijaus vykdymas nepavyko!" >> $ erreur cp $ temp $ routeur.error.log elif ["'grep' Authentication nepavyko '$ temp'"] tada aidėjo "Mot de passe erroné pour $ routeur!" echo "$ routeur: neteisingas prisijungimas / slaptažodis" >> $ erreur elif ["'grep' Connection atmetė '$ temp'"] tada echo "Connexion à distance sur $ routeur désactivé!" echo "$ routeur: vty ryšys išjungtas" >> $ erreur elif ["'grep' Nėra maršruto, kuriame būtų" $ temp ""], tada atsikartos "Alias DNS $ routeur olemassa IP IPidide!" echo "$ routeur: Nėra maršruto į šeimininką" >> $ erreur elif ["'grep' ProCurve '$ temp'"] tada aidėkite "routeur $ routeur HP ir ne Cisco!" echo "$ routeur: ne Cisco maršrutizatorius (HP ProCurve)" >> $ tour elif ["'grep' Alcatel '$ temp'"] tada aidi "routeur $ routeur Alcatel ir ne Cisco!" echo "$ routeur: ne" Cisco maršrutizatorius (Alcatel) ">> $ erreur elif [" 'grep' Sveiki atvykę į X1000 '$ temp' "], tada aidi" routeur $ routeur X1000 ir ne Cisco! " echo "$ routeur: ne Cisco įranga (X1000)" >> $ tour elif ["'grep'% Nežinoma komanda '$ temp'" -o "'grep'% Neteisingas '$ temp'"] tada echo "/! \ t Komandos „Cisco non reconnues par l'equipement“ „Consultez le fichier log de $ routeur !!!“ echo "$ routeur: Neatpažintos komandos" >> $ erreur cp $ temp $ routeur.error.log elif ["'grep' Prisijungta prie '$ temp'" -o "'grep' Uždara užsienio priimančiosios. ' $ temp '"] tada echo" $ routeur Telnet Gerai! " elif ["'grep' Connexion enregistree sur le terminal '$ temp'" -o "'grep' Ryšys su '$ temp'"] tada echo "$ routeur SSH OK!" elif ["$ COD_RET"! = "0"], tada echo "Problème de connexion a l'equipement $ routeur!" echo "$ routeur: ryšio problema" >> $ erreur fi fi atliktas rm -f $ temp # [11] išėjimas
Komentarai
- 1 : Slėpti slaptažodžio įvestį
- 2 : Visi failai yra saugomi kintamuosiuose (santykinis kelias), leidžiantys paleisti scenarijų iš bet kur.
- 3 : pašalina esamus failus, sukurtus, jei scenarijus jau įvykdytas.
- 4 : sukurkite „Expect“ scenarijų
- 5 : nustatyti leidimo scenarijaus leidimus
- 6. Vykdykite „Expect“ scenarijų, sujungdami išvesties klaidą su standartine išvestimi, apskaičiuodami vykdymo laiką, skirtą laikui.
- 7 : patikrinkite, ar nėra autentifikavimo problemų, skaičiuodami „Password“ (slaptažodžio) atvejų skaičių faile.
- 8 : patikrinkite vykdymo laiką ir patikrinkite, ar jis neviršija 10 (laukiama laiko pertrauka)
- 9 : SSH ryšio klaida pakartokite procedūrą per „Telnet“.
- 10 : patikrinkite visus scenarijaus sukurtus klaidų atvejus. (Cf II).
- 11 : Ištrinkite temp failą.