Automatisere oppføring i SecureCRT ved hjelp av skript
Nettverksingeniører står ofte overfor oppgaven med å kopiere/lime inn visse fragmenter fra en notisblokk til konsollen. Du må vanligvis kopiere flere parametere: Brukernavn/Passord og noe annet. Bruken av skript lar deg fremskynde denne prosessen. MEN oppgavene med å skrive skriptet og utføre skriptet bør ta kortere tid totalt enn manuell konfigurasjon, ellers er skriptene ubrukelige.
Hva er denne artikkelen for? Denne artikkelen er fra Fast Start-serien og har som mål å spare nettverksingeniører for tid når de setter opp utstyr (enkeltoppgave) på flere enheter. Bruker SecureCRT-programvare og innebygd skriptutførelsesfunksjonalitet. Innhold
SecureCRT-programmet har en innebygd skriptutførelsesmekanisme rett ut av esken. Hva er terminalskript til?
Automatisert I/O, og minimal I/O-validering.
Få fart på utførelsen av rutineoppgaver - reduser pauser mellom utstyrsinnstillinger. (De facto reduksjon av pauser forårsaket av tid for å utføre kopiering/tidligere handlinger på samme maskinvare, med 3 eller flere kommandofragmenter som skal brukes på maskinvaren.)
Dette dokumentet dekker oppgavene:
Oppretting av enkle skript.
Kjører skript på SecureCRT.
Eksempler på bruk av enkle og avanserte skript. (Trening fra det virkelige liv.)
Oppretting av enkle skript.
De enkleste skriptene bruker bare to kommandoer, Send og WaitForString. Denne funksjonaliteten er nok for 90 % (eller mer) av oppgavene som utføres.
Skript kan fungere i Python, JS, VBS (Visual Basic), Perl, etc.
# $language = "VBScript"
# $interface = "1.0"
Sub Main
crt.Screen.Synchronous = True
crt.Screen.Send vbcr
crt.Screen.WaitForString "name"
crt.Screen.Send "cisco" & vbcr
crt.Screen.WaitForString "assword"
crt.Screen.Send "cisco" & vbcr
crt.Screen.Synchronous = False
End Sub
Vanligvis en fil med filtypen "*.vbs"
Lag et skript ved å bruke en skriptoppføring.
Lar deg automatisere prosessen med å skrive et skript. Du begynner å skrive et manus. SecureCRT registrerer kommandoene og det påfølgende maskinvaresvaret og viser det ferdige skriptet for deg.
EN. Begynn å skrive manus:
SecureCRT-meny => Skript => Start opptak av skript
b. Utfør handlinger med konsollen (utfør konfigurasjonstrinn i CLI).
V. Skriv ferdig manuset:
SecureCRT-meny => Skript => Stopp opptak av skript...
Lagre skriptfilen.
Eksempel på utførte kommandoer og lagret skript:
Kjører skript på SecureCRT.
Etter å ha opprettet/redigert skriptet, dukker det opp et logisk spørsmål: Hvordan bruker man skriptet?
Det er flere måter:
Kjøres manuelt fra Script-menyen
Automatisk start etter tilkobling (påloggingsskript)
Automatisk pålogging uten bruk av skript
Utløses manuelt med en knapp i SecureCRT (en knapp er ennå ikke opprettet og lagt til SecureCRT)
Kjøres manuelt fra Script-menyen
SecureCRT-meny => Skript => Kjør...
- De siste 10 skriptene huskes og er tilgjengelige for hurtigstart:
SecureCRT-meny => Skript => 1 "Skriptfilnavn"
SecureCRT-meny => Skript => 2 "Skriptfilnavn"
SecureCRT-meny => Skript => 3 "Skriptfilnavn"
SecureCRT-meny => Skript => 4 "Skriptfilnavn"
SecureCRT-meny => Skript => 5 "Skriptfilnavn"
Automatisk start etter tilkobling (påloggingsskript)
Innstillinger for automatisk loggingsskript er konfigurert for den lagrede økten: Tilkobling => Påloggingshandlinger => Påloggingsskript
Automatisk pålogging uten bruk av skript
Det er mulig å automatisk skrive inn brukernavnet til passordet uten å skrive et skript, kun ved å bruke den innebygde funksjonaliteten til SecureCRT. I tilkoblingsinnstillingene "Tilkobling" => Påloggingshandlinger => Automatiser pålogging - du må fylle ut flere bunter - som betyr parene: "Forventet tekst" + "Sendte tegn til denne teksten" kan det være mange slike par. (Eksempel: 1. par venter på brukernavn, andre venter på passord, tredje venter på privilegert modus-forespørsel, fjerde par for privilegert modus passord.)
Eksempel på automatisk pålogging på Cisco ASA:
Utløses manuelt med en knapp i SecureCRT (en knapp er ennå ikke opprettet og lagt til SecureCRT)
I SecureCRT kan du tilordne et skript til en knapp. Knappen legges til et panel spesielt laget for dette formålet.
EN. Legge til et panel til grensesnittet: SecureCRT Menu => View => Button Bar
b. Legg til en knapp på panelet og legg til et skript. – Høyreklikk på knappelinjen og velg "Ny knapp..." fra hurtigmenyen.
V. I "Kartknapp"-dialogboksen, i "Handling"-feltet, velg handlingen "Kjør skript" (funksjon).
Angi en bildetekst for knappen. Fargen for knappikonet. Fullfør innstillingene ved å klikke OK.
Merk:
Panelet med knapper er svært nyttig funksjonalitet.
1. Det er mulig, når du logger på en bestemt økt, å spesifisere hvilket panel som skal åpnes for denne fanen som standard.
2. Det er mulig å sette forhåndsdefinerte handlinger for standard handlinger med utstyr: vis show versjon, vis running-config, lagre konfigurasjon.
Ingen skript er knyttet til disse knappene. Bare handlingslinje:
Innstilling - slik at når du bytter til en økt, åpnes det nødvendige panelet med knapper i øktinnstillingene:
Det er fornuftig for kunden å sette opp individuelle skript for pålogging og gå til panelet med hyppige kommandoer for leverandøren.
Når du trykker på Gå til Cisco-knappen, bytter panelet til Cisco-knapplinjen.
Eksempler på bruk av enkle og avanserte skript. (Trening fra det virkelige liv.)
Enkle manus er nok for nesten alle anledninger. Men en gang trengte jeg å komplisere manuset litt – for å få fart på arbeidet. Denne komplikasjonen ba nettopp om ytterligere data i en dialogboks fra brukeren.
Be om data fra brukeren ved hjelp av en dialogboks
Jeg hadde 2 i dataforespørselsskriptet. Dette er vertsnavnet og den fjerde oktetten av IP-adressen. For å utføre denne handlingen - googlet jeg hvordan jeg gjør det og fant det på den offisielle nettsiden til SecureCRT (vandyke). - funksjonaliteten kalles prompt.
Denne delen av skriptet ba om vertsnavn og tall fra den siste oktetten. Siden det var 15 stykker utstyr. Og dataene ble presentert i en tabell, så kopierte jeg verdiene fra tabellen og limte dem inn i dialogboksene. Videre fungerte manuset selvstendig.
FTP-kopiering til nettverksutstyr.
Dette skriptet startet kommandovinduet mitt (skall) og kopierte data via FTP. Avslutt økten på slutten. Det er umulig å bruke notisblokk til dette, fordi kopiering tar veldig lang tid og dataene i FTP-bufferen vil ikke bli lagret så lenge:
# $language = "Python"
# $interface = "1.0"
# Connect to a telnet server and automate the initial login sequence.
# Note that synchronous mode is enabled to prevent server output from
# potentially being missed.
def main():
crt.Screen.Synchronous = True
crt.Screen.Send("ftp 192.168.1.1r")
crt.Screen.WaitForString("Name")
crt.Screen.Send("adminr")
crt.Screen.WaitForString("Password:")
crt.Screen.Send("Passwordr")
crt.Screen.WaitForString("ftp")
crt.Screen.Send("binaryr")
crt.Screen.WaitForString("ftp")
crt.Screen.Send("put S5720LI-V200R011SPH016.patr")
crt.Screen.WaitForString("ftp")
crt.Screen.Send("quitr")
crt.Screen.Synchronous = False
main()
Skrive inn brukernavn/passord ved hjelp av et skript
Hos en kunde ble tilgangen til nettverksutstyr direkte stengt. Det var mulig å gå inn i utstyret ved først å koble til Standard Gateway, og fra det deretter til utstyret som var koblet til det. ssh-klienten innebygd i IOS/maskinvareprogramvaren ble brukt til å koble til. Følgelig ble brukernavnet og passordet bedt om i konsollen. Med skriptet nedenfor ble brukernavnet og passordet oppgitt automatisk:
# $language = "Python"
# $interface = "1.0"
# Connect to a telnet server and automate the initial login sequence.
# Note that synchronous mode is enabled to prevent server output from
# potentially being missed.
def main():
crt.Screen.Synchronous = True
crt.Screen.Send("snmpadminr")
crt.Screen.WaitForString("assword:")
crt.Screen.Send("Passwordr")
crt.Screen.Synchronous = False
main()
Merk: Det var 2 skript: Ett for administratorkontoen og det andre for eSIGHT-kontoen.
Skript med muligheten til å legge til data direkte under skriptutførelse.
Oppgaven var å legge til en statisk rute på alt nettverksutstyr. Men gatewayen til Internett på hvert utstyr var forskjellig (og den skilte seg fra standard gateway). Følgende skript viste rutingtabellen, gikk inn i konfigurasjonsmodus, skrev ikke kommandoen til slutten (IP-adressen til gatewayen til Internett) - jeg la til denne delen. Etter at jeg trykket på Enter, fortsatte skriptet å utføre kommandoen.
# $language = "Python"
# $interface = "1.0"
# Connect to a telnet server and automate the initial login sequence.
# Note that synchronous mode is enabled to prevent server output from
# potentially being missed.
def main():
crt.Screen.Synchronous = True
crt.Screen.Send("Zdes-mogla-bit-vasha-reklamar")
crt.Screen.WaitForString("#")
crt.Screen.Send("show run | inc ip router")
crt.Screen.WaitForString("#")
crt.Screen.Send("conf tr")
crt.Screen.WaitForString("(config)#")
crt.Screen.Send("ip route 10.10.10.8 255.255.255.252 ")
crt.Screen.WaitForString("(config)#")
crt.Screen.Send("endr")
crt.Screen.WaitForString("#")
crt.Screen.Send("copy run star")
crt.Screen.WaitForString("[startup-config]?")
crt.Screen.Send("r")
crt.Screen.WaitForString("#")
crt.Screen.Send("exitr")
crt.Screen.Synchronous = False
main()
I dette skriptet, på linjen: crt.Screen.Send("ip-rute 10.10.10.8 255.255.255.252 ") er ikke IP-adressen til gatewayen lagt til, og det er ikke noe vognreturtegn. Skriptet venter på neste linje med tegnene "(config) #" Disse tegnene dukket opp etter at jeg skrev inn ip-adressen og gikk inn.
konklusjon:
Når du skriver et script og utfører det, må regelen følges: Tiden for å skrive et script og utføre et script bør aldri være mer enn den tiden teoretisk brukt på å gjøre det samme arbeidet manuelt (kopiere/lime inn fra notisblokk, skrive og feilsøke en lekebok for ansible, skriving og feilsøking av pythonskript). Det vil si at bruken av skriptet skal spare tid, og ikke kaste bort tid på engangsautomatisering av prosesser (dvs. når skriptet er unikt og det ikke blir flere repetisjoner). Men hvis skriptet er unikt og automatisering med skriptet og skriving/feilsøking av skriptet tar mindre tid enn å gjøre det på noen annen måte (ansible, kommandovindu), så er skriptet den beste løsningen.
Feilsøking av et skript. Skriptet vokser gradvis, feilsøking finner sted ved innkjøring på den første, andre, tredje enheten, og innen den fjerde vil skriptet mest sannsynlig være fullt operativt.
Å kjøre et skript (ved å skrive inn brukernavn+passord) med musen er vanligvis raskere enn å kopiere brukernavn og passord fra en notisblokk. Men ikke trygt fra et sikkerhetssynspunkt.
Et annet (ekte) eksempel ved bruk av script: Du har ikke direkte tilgang til nettverksutstyr. Men det er behov for å konfigurere alt nettverksutstyr (ta det inn i overvåkingssystemet, konfigurer et ekstra brukernavn/passord/snmpv3brukernavn/passord). Det er tilgang når du går til Core-bryteren, fra den åpner du SSH til annet utstyr. Hvorfor kan du ikke bruke Ansible. - Fordi vi møter en grense på antall tillatte samtidige økter på nettverksutstyr (linje vty 0 4, brukergrensesnitt vty 0 4) (et annet spørsmål er hvordan man starter forskjellig utstyr i Ansible med samme SSH første hopp).
Skriptet reduserer tid under lange operasjoner - for eksempel kopiering av filer via FTP. Etter at kopieringen er fullført, begynner skriptet umiddelbart å fungere. En person må se slutten av kopieringen, deretter innse slutten på kopieringen, og deretter angi de riktige kommandoene. Manuset gjør det objektivt raskere.
Skript kan brukes der det er umulig å bruke verktøy for massedatalevering: konsoll. Eller når noen av dataene for utstyret er unike: vertsnavn, ledelsens ip-adresse. Eller når du skriver et program og feilsøker er det vanskeligere enn å legge til data mottatt fra utstyret mens skriptet kjører. – Et eksempel med et script for å foreskrive en rute, når hvert utstyr har sin egen IP-adresse til internettleverandøren. (Mine kolleger skrev slike skript - da DMVPN snakket var over 3. Det var nødvendig å endre DMVPN-innstillingene).
Kasusstudie: Konfigurering av innledende innstillinger på en ny svitsj ved hjelp av konsollportene:
A. Koblet konsollkabelen til enheten.
B. Kjør skriptet
B. Ventet på utførelsen av manuset
D. Koblet konsollkabelen til neste enhet.
E. Hvis bryteren ikke er den siste, gå til trinn B.
Som et resultat av manusets arbeid:
det første passordet er satt på utstyret.
Brukernavn oppgitt
den unike IP-adressen til enheten legges inn.
PS operasjonen måtte gjentas. Fordi standard ssh ikke ble konfigurert/deaktivert. (Ja, dette er min feil.)
Et eksempel på et langt skript, med to spørringer: vertsnavn og IP-adresse. Den ble laget for forhåndsinnstilling av utstyr gjennom konsollen (9600 baud). Og også for å forberede tilkobling av utstyr til nettverket.
Slike script er vanligvis ikke nødvendig, men utstyrsmengden er 15 stk. Tillatt raskere oppsett. Det gikk raskere å sette opp utstyret ved hjelp av SecureCRT Command-vinduet.
Sette opp en konto for ssh.
Et annet eksempel. Konfigurasjonen skjer også via konsollen.
# $language = "Python"
# $interface = "1.0"
# Connect to a telnet server and automate the initial login sequence.
# Note that synchronous mode is enabled to prevent server output from
# potentially being missed.
def main():
crt.Screen.Synchronous = True
crt.Screen.Send("r")
crt.Screen.WaitForString("name")
crt.Screen.Send("adminr")
crt.Screen.WaitForString("Password:")
crt.Screen.Send("Passwordr")
crt.Screen.WaitForString(">")
crt.Screen.Send("sysr")
crt.Screen.Send("stelnet server enabler")
crt.Screen.Send("aaar")
crt.Screen.Send("local-user admin service-type terminal ftp http sshr")
crt.Screen.Send("quitr")
crt.Screen.Send("user-interface vty 0 4r")
crt.Screen.Send("authentication-mode aaar")
crt.Screen.Send("quitr")
crt.Screen.Send("quitr")
crt.Screen.Synchronous = False
main()
Om SecureCRT:Betalt programvare: fra $99 (den minste prisen er kun for SecureCRT i ett år) Offisiell nettside
En programvarelisens kjøpes én gang, med støtte (for oppdatering), deretter brukes programvaren med denne lisensen i ubegrenset tid.
Fungerer på Mac OS X og Windows operativsystemer.
Det er skriptstøtte (denne artikkelen)
Det er Kommandovindu
Seriell/Telnet/SSH1/SSH2/Shell-operativsystem