Trimiterea comenzilor CISCO trimise prin SSH / Telnet

Informatii generale

  • Numele scriptului: publip.sh (publi (point) sh ... publipSH.
  • Flexibilitate: Complet personalizabil.
  • Constrângeri: solicită ca parola să fie aceeași pentru toate dispozitivele sau va trebui să adăugați câteva linii de cod ...
  • Nivelul de risc: Ridicat. Fii foarte atent cu intrările, o manipulare greșită poate îngheța întreaga rețea.
  • Cunoștințe Linux necesare: Deschideți / editați un fișier (vi file_name) și salvați modificările (Esc apoi: wq? .Run un script folosind comanda ./Scriptname din dosarul țintă.

Ce este scriptul publip.sh?

Acest script permite unui administrator de rețea să trimită comenzi Cisco pe un număr de dispozitive selectate la distanță (router, firewall, switch, puncte de acces wireless ...), prin SSH sau Telnet (scriptul gestionează automat ambele tipuri de conexiune).

  • Aceste linii de comandă vor fi introduse inițial într-o secvență, o comandă per linie (ca fișier sau un fișier de configurare), într-un fișier mic numit commandes.txt (nu există limită de dimensiune)
  • Introduceți toate IP-urile (sau aliasul DNS) pentru diferitele dispozitive din rețea (nu există limită pentru numărul de dispozitive).
  • În sfârșit, atunci când rulați scriptul, vi se va cere să introduceți o parolă, care în cazul nostru trebuie să fie aceeași pentru toate dispozitivele.

Scenariul merge mult mai departe!

Într-adevăr, acesta este complet autonom și poate agăța erorile de conectare, introducerea datelor și modificările înregistrare într-un fișier jurnal. Acest script identifică, de asemenea, echipamentele pentru care este capabil să se conecteze prin SSH sau Telnet și apoi păstrează o arhivă a procedurilor care generează erori critice (script-ul de eroare, interpretarea greșită a unui comanf de către echipament). Diferitele tipuri de erori sunt:

  • 1 - Timp de conectare
  • 2 - Eroare la conectare, parolă greșită
  • 3 - Alias ​​DNS sau IP inexistent
  • 4 - Blocarea scriptului Expect (creați fișierul jurnal al echipamentului)
  • 5 - conexiunea la distanță este dezactivată
  • 6 - Alias ​​DNS corect, dar IP inexistent
  • 7 - Echipamente care nu sunt Cisco (HP Procurve)
  • 8 - Echipamente non-Cisco (X1000)
  • 9 - Echipamente non-Cisco (Alcatel)
  • 10 - Comanda de expediere nu este recunoscută de echipament
  • 11 - Eroare care nu este listată mai sus ($? = 1)

Veți putea opera pe toate echipamentele în același timp și veți aduna informații valoroase în rețeaua dvs.!

Conținutul dosarelor subsidiare

commandes.txt

Va trebui să introduceți comenzile ... Fișierul trebuie să înceapă pentru orice modificare a configurației router-ului cu "conf t" și "end". Modificările trebuie efectuate în mod ierarhic și nu uitați să salvați modificările! Exemplul mic:

 # commandes.txt confuter router ospf 100 rețea 50.50.100.0 0.0.0.255 zona 0 interfață de ieșire fa0 / 0 ip ospf salut-interval 5 ip ospf interval mort 20 zona de ieșire 0 autentificare mesaj-digest sfârșit 

scrie mem

liste.txt

Introduceți aliasul IP sau DNS al tuturor echipamentelor implicate:

 # liste.txt 10.25.85.46 routeur-marseille switch-assemblee-general 80.54.136.105 

Scriptul nu ia în considerare spațiile goale.

Scriptul

Scenariul va fi marcat cu un număr mic [1], care va fi discutat în partea de jos a scenariului

 #################################################################################################################################### telnet.sh "export erreur =" ./ rapport_erreurs.log "export temp =" ./tmp_routeur.log "export cmdcisco =" ./ commandes.txt "export liste =" ./ liste.txt " rm -f $ erreur # [3] rm -f $ ssh rm -f $ telnet cat $ liste | în timp ce citiți ruta; dacă ["$ routeur"! = ""] atunci dacă [! -f $ ssh] # [4] apoi echo 'așteptați 2> & 1 <> $ ssh echo' spawn ssh [email protejat] $ routere '>> $ ssh echo' așteptați {'>> $ ssh echo' " {send "$ password \ r"} '>> $ ssh echo' timeout {ieșire} '>> $ ssh echo'} '>> $ ssh echo' așteptați '#' '>> $ ssh cat $ cmdcisco | în timp ce citiți comanda echo "send \" $ commande \ r \ "" echo 'așteptați "#"' terminat >> $ ssh echo 'trimite' ieșire \ r '' >> $ ssh echo ' $ ssh echo 'ieșire' >> $ ssh echo 'EOF' >> $ ssh chmod + x $ ssh # [5] timp fișier -p $ ssh> $ temp 2> & 1 # [6] COD_RET = $? auth = "cat $ temp" grep -c "Parola:" "[7] dacă [" $ auth "-gt" 1 "] apoi echo" Problème d'authentification sur $ routeur! " echo "$ routeur: logare greșită / parolă" >> $ erreur continuă fi temps = "grep" real '$ temp | sed 's / real / § /' cut -d'§ '-f2 tăiat -d "" -f1 " tăiat -d "." -f1 'dacă [$ temps -ge 10 -a! "'grep' închis '$ temp'"] # [8] apoi echo "L'equipement $ routeur ne réponds pas!"; echo "$ routeur: conexiunea a expirat" >> $ erreur continua fi dacă ["$ COD_RET"! = "0"] # [9] apoi #Erreur de conectare a l'équipement en SSH dacă [! -f $ telnet] apoi echo 'așteptați 2> & 1 <> $ telnet echo' spawn telnet $ route '>> $ telnet echo' trimite 'admin' '>> $ telnet echo' expect ' $ telnet echo 'trimite' $ parola \ r "'>> $ telnet echo' așteptați '#' '>> $ telnet cat $ cmdcisco | în timp ce citiți comanda echo "trimite \" $ commande \ r \ "" echo 'așteptați "#"' terminat >> $ telnet echo 'trimite' ieșire \ r '' >> $ telnet echo ' $ telnet echo 'ieșire' >> $ telnet echo 'EOF' >> $ telnet chmod + x $ telnet fi $ telnet> $ temp 2> & 1 fi COD_RET = $? auth = "cat $ temp | grep -c" Parola: "" [10] dacă ["$ auth" -gt "1"] apoi echo "Problème d'authentification sur $ routeur!" echo "$ routeur: logare greșită / parolă" >> $ erreur elif ["'grep" eșuare nume gazdă "$ temp" "] apoi echo" l'equipement $ routeur n'existe pas! " echo "$ routeur: nu există" >> $ erreur elif ["grep" Unknown host '$ temp' "] apoi echo" la saisie de l'ip ou du nom $ routeur est incorrecte! " echo "$ routeur: greșeală de scriere" >> $ erreur elif ["'grep' trimite: id spawn exp4 nu deschide '$ temp'"] apoi echo "/! \ ERREUR dans la procédure. !!“ echo "$ routeur: Așteptați executarea scriptului nu a reușit!" >> $ erreur cp $ temp $ routeur.error.log elif ["grep" Autentificare nereușită '$ temp' "] apoi echo" Mot de passe erroné pour $ routeur! " echo "$ routeur: greșit conectare / parolă" >> $ erreur elif ["grep" Conectare refuzat '$ temp' "] apoi echo" Connexion à distance sur $ routeur désactivé! " echo "$ routeur: vty conexiune dezactivată" >> $ erreur elif ["grep" Niciun traseu pentru a găzdui '$ temp' "] apoi echo" Alias ​​DNS $ routeur existing mais IP invalid! " echo "$ routeur: Nici un traseu pentru a găzdui" >> $ erreur elif ["'grep' ProCurve '$ temp'"] apoi echo "routeur $ routeur HP et non Cisco!" echo "$ routeur: router non Cisco (HP ProCurve)" >> $ erreur elif ["'grep' Alcatel '$ temp'"] apoi echo "routeur $ routeur Alcatel et non Cisco!" echo "$ routeur: router non Cisco (Alcatel)" >> $ erreur elif ["grep" Bine ați venit la X1000 'temp temp' "] apoi echo" routeur $ route X1000 și non Cisco! " echo "$ routere: non Cisco equipement (X1000)" >> $ erreur elif ["'grep'% comanda necunoscuta '$ temp'" -o "'grep'% Invalid '$ temp' Comandă Cisco nu recunoaște par echipamentul. Consultez le fichier log de $ routeur !!! " echo "$ routeur: Comenzile nerecunoscute găsite" >> $ erreur cp $ temp $ routeur.error.log elif ["'grep" Conectat la' $ temp '"-o"' grep 'Conexiunea este închisă de o gazdă străină. $ temp '"] apoi echo" $ route Telnet OK! " elif ['' grep 'Connexion enregistree sur le terminal' $ temp '"-o"' grep 'Conectare la' $ temp '"] apoi echo" $ route SSH OK! " elif ["$ COD_RET"! = "0"] apoi faceți clic pe "Problème de connexion a l'equipement $ routeur!" echo "$ routeur: problemă de conectare" >> $ erreur fi fi nată rm -f $ temp # [11] ieșire 

Comentarii

  • 1 : Ascundeți introducerea parolei
  • 2 : Toate fișierele sunt stocate în variabile (calea relativă) vă permit să rulați scriptul de oriunde.
  • 3 : Elimină fișierele existente generate dacă scriptul a fost deja executat.
  • 4 : Creați scriptul Expectați
  • 5 : Setați permisiunile pentru scriptul Expect
  • 6 : Executați scriptul Expect, agregând eroarea de ieșire cu ieșirea standard, calculând timpul de execuție pentru a gestiona timpul de expirare.
  • 7 : Verificați problemele de autentificare prin numărarea numărului de apariții "Parolă" în fișierul temp.
  • 8 : Verificați timpul de execuție și verificați dacă nu este mai mare de 10 (valoarea de așteptare așteptată)
  • 9 : Pentru eroarea de conexiune SSH, repetați procedura prin Telnet.
  • 10 : Verificați toate cazurile de eroare generate de script. (Cf II).
  • 11 : Ștergeți fișierul Temp.

Articolul Precedent Articolul Următor

Cele Mai Importante Sfaturi