Afsendelse af CISCO-kommandoer sendt via SSH / Telnet

Generelle oplysninger

  • Scriptnavn: publip.sh (publi (point) sh ... publipSH.
  • Fleksibilitet: Kan tilpasses fuldt ud.
  • Begrænsninger: kræver, at adgangskoden er den samme for alle enheder, eller du skal tilføje nogle linjer kode ...
  • Risikoniveau: Høj. Vær meget forsigtig med posterne, en forkert manipulation kan fryse hele dit netværk.
  • Linux viden kræves: Åbn / rediger en fil (vi filnavn) og gem ændringer (Esc derefter: wq? .Run et script ved hjælp af kommandoen ./Scriptname fra målmappen.

Hvad er publip.sh script?

Dette script giver en netværksadministrator mulighed for at sende Cisco-kommandoer på en række udvalgte eksterne enheder (router, firewall, switch, trådløse adgangspunkter ...), via SSH eller Telnet (scriptet håndterer automatisk begge typer forbindelse).

  • Disse kommandolinjer vil i starten blive indtastet i en sekvens, en kommando pr. Linje (som en batch eller en konfigurationsfil), i en lille fil kaldet commandes.txt (der er ingen størrelsesgrænse)
  • Indtast alle IP'erne (eller DNS-alias) for de forskellige enheder på dit netværk (der er ingen grænse for antallet af enheder).
  • Endelig bliver du bedt om at indtaste et kodeord, som i vores tilfælde skal være det samme for alle enheder, når du kører scriptet.

Skriften går meget længere!

Faktisk er det fuldt autonome og kan hænge forbindelsesfejl, dataindtastning og registrere ændringer i en logfil. Dette skript identificerer også det udstyr, som det er i stand til at oprette forbindelse via SSH eller Telnet, og derefter opbevares et arkiv af procedurerne, der genererer kritiske fejl (crash script, fejlfortolkning af en kommanf af udstyret). De forskellige typer fejl er:

  • 1 - Connection timeout
  • 2 - Log-in fejl, forkert adgangskode
  • 3 - DNS Alias ​​eller IP ikke-eksisterende
  • 4 - Krasjer af det forventede script (lav logfil af udstyret)
  • 5 - Fjernforbindelse deaktiveret
  • 6 - Korrekt DNS-alias, men ikke-eksisterende IP
  • 7 - Udstyr ikke Cisco (HP Procurve)
  • 8 - Ikke-Cisco-udstyr (X1000)
  • 9 - Ikke-Cisco-udstyr (Alcatel)
  • 10 -Sent-kommando ikke genkendt af udstyr
  • 11 - Fejl ikke angivet ovenfor ($? = 1)

Du vil være i stand til at operere på alt dit udstyr på samme tid og indsamle værdifulde oplysninger på dit netværk!

Indholdet af datterdokumenter

commandes.txt

Du skal indtaste kommandoerne ... Filen skal for alle ændringer i routerkonfigurationen starte med "conf t" og "end". Ændringer skal udføres på en hierarkisk måde og glem ikke at gemme dine ændringer! Lille eksempel:

 # commandes.txt conf router ospf 100 netværk 50.50.100.0 0.0.0.255 område 0 exit grænseflade fa0 / 0 ip ospf hej-interval 5 ip ospf dead-interval 20 exit area 0 autentificering besked-fordøjelse ende 

skriv mem

liste.txt

Indtast IP eller DNS-alias for alt det involverede udstyr:

 # list.txt 10.25.85.46 routeur-marseille switch-assemblee-generale 80.54.136.105 

Sriptet tager ikke hensyn til tomme mellemrum.

Manuskriptet

Skriften vil blive overskrevet af lille # [1], som vil blive diskuteret nederst i scriptet

 #! / bin / bash # script.sh ekko "veuillez donner le mot de passe" stty -echo # [1] læs password stty echo eksport ssh = "./ ssh.sh" # [2] eksport telnet = "./ telnet.sh "eksport erreur =" ./ rapport_erreurs.log "eksport temp =" ./ tmp_routeur.log "eksport cmdcisco =" ./ commandes.txt "eksport liste =" ./ liste.txt "eksport kodeord eksport routeur eksport commande rm -f $ erreur # [3] rm -f $ ssh rm -f $ telnet cat $ liste | mens du læser routeur; gør hvis ["$ routeur"! = ""] så hvis [! -f $ ssh] # [4] så ekko 'forventer 2> & 1 <> $ ssh echo' spawn ssh [email protected] $ routeur '>> $ ssh echo' forventer {'>> $ ssh echo' "Password:" {send "$ password \ r"} '>> $ ssh ekko' timeout {exit} '>> $ ssh echo'} '$ ssh echo' forvente '#' '>> $ ssh cat $ cmdcisco | mens read commande gør echo "send \" $ commande \ r \ "echo 'expect' #" 'færdig >> $ ssh echo' send 'exit \ r "' >> $ ssh ekko 'forventer' lukket '' >> $ ssh echo 'exit' >> $ ssh ekko 'EOF' >> $ ssh chmod + x $ ssh # [5] fi tid -p $ ssh> $ temp 2> & 1 # [6] COD_RET = $? auth = "cat $ temp | grep -c" Adgangskode: "" # [7] hvis ["$ auth" -gt "1"] så ekko "Problème d'authentification sur $ routeur!" ekko "$ routeur: forkert log-in / password" >> $ erreur fortsæt fi temps = "grep" real '$ temp | sed 's / real / § /' | cut -d'§ '-f2 | cut -d '' -f1 | skære -d '.' -f1 'hvis [$ temps -ge 10 -a! "'grep' lukket '$ temp'"] # [8] derefter ekko "L'equipement $ routeur ne réponds pas!"; echo "$ routeur: forbindelse timet ud" >> $ erreur fortsæt fi hvis ["$ COD_RET"! = "0"] # [9] derefter #Erreur de connexion a l'équipement og SSH hvis [! -f $ telnet] så ekko 'forventer 2> & 1 <> $ telnet echo' spawn telnet $ routeur '>> $ telnet echo' send 'admin \ r' '>> $ telnet echo' forventer 'Password:' '>> $ telnet echo 'send' $ password \ r '' >> $ telnet echo 'forvente' # "'>> $ telnet cat $ cmdcisco | mens read commande gør ekko "send \" $ commande \ r \ "" echo 'expect' # "'gjort >> $ telnet echo' send 'exit \ r' '>> $ telnet echo' forventer 'lukket' '>> $ telnet echo 'exit' >> $ telnet ekko 'EOF' >> $ telnet chmod + x $ telnet fi $ telnet> $ temp 2> & 1 fi COD_RET = $? auth = "cat $ temp | grep -c" Adgangskode: "" # [10] hvis ["$ auth" -gt "1"] så ekko "Problème d'authentification sur $ routeur!" ekko "$ routeur: forkert log-in / password" >> $ erreur elif ["'grep' Hostnavn opsætningsfejl '$ temp'"] derefter ekko "l'equipement $ routeur n'existe pas!" echo "$ routeur: eksisterer ikke" >> $ erreur elif ["'grep' Ukendt vært '$ temp'"] derefter ekko "la saisie de l'ip ou du nom $ routeur est incorrecte!" echo "$ routeur: forkert stavning" >> $ erreur elif ["'grep' send: spawn id exp4 ikke åben '$ temp'"] derefter ekko "/! \ ERREUR dans la procédure. Konsulter log ind på $ routeur! !!" ekko "$ routeur: Forvent scriptudførelse mislykkedes!" >> $ erreur cp $ temp $ routeur.error.log elif ["'grep' Godkendelse mislykkedes '$ temp'"] derefter ekko "Mot de passe erroné pour $ routeur!" echo "$ routeur: forkert log-in / password" >> $ erreur elif ["'grep' Forbindelse nægtet '$ temp'"] derefter ekko "Connexion à distance sur $ routeur désactivé!" ekko "$ routeur: vty connection disabled" >> $ erreur elif ["'grep' Ingen rute til vært '$ temp'"] derefter ekko "Alias ​​DNS $ routeur existant mais IP invalide!" echo "$ routeur: Ingen rute til vært" >> $ erreur elif ["'grep' ProCurve '$ temp'"] derefter ekko "routeur $ routeur HP et non Cisco!" echo "$ routeur: ikke Cisco router (HP ProCurve)" >> $ erreur elif ["'grep' Alcatel '$ temp'"] derefter ekko "routeur $ routeur Alcatel et non Cisco!" echo "$ routeur: ikke Cisco router (Alcatel)" >> $ erreur elif ["'grep' Velkommen til X1000 '$ temp'"] derefter ekko "routeur $ routeur X1000 et non Cisco!" echo "$ ruteur: ikke Cisco Equipement (X1000)" >> $ erreur elif ["'grep'% Ukendt kommando '$ temp'" -o "'grep'% Ugyldig '$ temp'"] derefter ekko "/! \ Kommandoer Cisco non reconnues par l'equipement. Konsulter log ind på $ routeur !!! " echo "$ routeur: Ukendte kommandoer fundet" >> $ erreur cp $ temp $ routeur.error.log elif ["'grep' Tilsluttet '$ temp'" -o "'grep' Forbindelse lukket af udenlandsk vært. ' $ temp '"] derefter ekko" $ routeur Telnet OK! " elif ["grep" Connexion enregistree sur le terminal '$ temp' "-o" 'grep' Tilslutning til '$ temp' "] derefter ekko" $ routeur SSH OK! " elif ["$ COD_RET"! = "0"] så ekko "Problemer med forbindelsen $ ruter!" ekko "$ routeur: connection problem" >> $ erreur fi fi gjort rm -f $ temp # [11] exit 

Kommentarer

  • 1 : Skjul adgangskoden input
  • 2 : Alle filer gemmes i variabler (relativ sti) giver dig mulighed for at køre scriptet hvor som helst.
  • 3 : Fjerner eksisterende filer, der genereres, hvis scriptet allerede er udført.
  • 4 : Opret Expect script
  • 5 : Indstil tilladelser for Expect-scriptet
  • 6 : Udfør Expect-scriptet, samler outputfejlen med standard output, beregning af eksekveringstiden for at håndtere timeout.
  • 7 : Check for autentificeringsproblemer ved at tælle antallet af "Password" -hændelser i tempfilen.
  • 8 : Kontroller udførelsestiden, og kontroller, at den ikke er højere end 10 (den forventede timeout-værdi)
  • 9 : For SSH-forbindelsesfejl, gentag proceduren via Telnet.
  • 10 : Kontroller alle de fejlsager, der genereres af scriptet. (Jf. II).
  • 11 : Slet tempfilen.

Forrige Artikel Næste Artikel

Top Tips