Automatisering af indtastning i SecureCRT ved hjælp af scripts
Netværksingeniører står ofte over for opgaven med at kopiere/indsætte bestemte fragmenter fra en notesblok til konsollen. Du skal normalt kopiere flere parametre: Brugernavn/Password og noget andet. Brugen af scripts giver dig mulighed for at fremskynde denne proces. MEN opgaverne med at skrive scriptet og udføre scriptet bør i alt tage kortere tid end manuel konfiguration, ellers er scripts ubrugelige.
Hvad er denne artikel til? Denne artikel er fra Fast Start-serien og har til formål at spare netværksingeniører for tid, når de opsætter udstyr (enkelt opgave) på flere enheder. Bruger SecureCRT-software og indbygget scriptudførelsesfunktionalitet. Indhold
SecureCRT-programmet har en indbygget script-udførelsesmekanisme ud af kassen. Hvad er terminalscripts til?
Automatiseret I/O og minimal I/O-validering.
Fremskynd udførelsen af rutineopgaver - reducer pauser mellem udstyrsindstillinger. (De facto reduktion af pauser forårsaget af tid til at udføre kopierings-/tidligere handlinger på den samme hardware, med 3 eller flere kommandofragmenter, der skal anvendes på hardware.)
Dette dokument dækker opgaverne:
Oprettelse af simple scripts.
Kører scripts på SecureCRT.
Eksempler på brug af simple og avancerede scripts. (Øv fra det virkelige liv.)
Oprettelse af simple scripts.
De enkleste scripts bruger kun to kommandoer, Send og WaitForString. Denne funktionalitet er nok til 90 % (eller mere) af de udførte opgaver.
Scripts kan fungere i Python, JS, VBS (Visual Basic), Perl osv.
# $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
Normalt en fil med filtypenavnet "*.vbs"
Opret et script ved hjælp af en scriptindgang.
Giver dig mulighed for at automatisere processen med at skrive et script. Du begynder at skrive et manuskript. SecureCRT registrerer kommandoerne og det efterfølgende hardwaresvar og viser det færdige script for dig.
EN. Begynd at skrive script:
SecureCRT Menu => Script => Start optagelse af script
b. Udfør handlinger med konsollen (udfør konfigurationstrin i CLI).
V. Afslut med at skrive manuskriptet:
SecureCRT Menu => Script => Stop optagelse af script...
Gem script-filen.
Eksempel på udførte kommandoer og gemt script:
Kører scripts på SecureCRT.
Efter oprettelse/redigering af scriptet opstår et naturligt spørgsmål: Hvordan anvender man scriptet?
Der er flere måder:
Kører manuelt fra Script-menuen
Automatisk start efter tilslutning (logon script)
Automatisk logon uden brug af et script
Udløses manuelt med en knap i SecureCRT (en knap er endnu ikke oprettet og tilføjet til SecureCRT)
Kører manuelt fra Script-menuen
SecureCRT Menu => Script => Kør...
- De sidste 10 scripts huskes og er tilgængelige for hurtig lancering:
SecureCRT menu => Script => 1 "Script filnavn"
SecureCRT menu => Script => 2 "Script filnavn"
SecureCRT menu => Script => 3 "Script filnavn"
SecureCRT menu => Script => 4 "Script filnavn"
SecureCRT menu => Script => 5 "Script filnavn"
Automatisk start efter tilslutning (logon script)
Indstillinger for automatisk logning script er konfigureret for den gemte session: Forbindelse => Logon handlinger => Logon script
Automatisk logon uden brug af et script
Det er muligt automatisk at indtaste brugernavnet på adgangskoden uden at skrive et script, kun ved at bruge den indbyggede funktionalitet i SecureCRT. I forbindelsesindstillingerne “Connection” => Logon Actions => Automatiser logon - du skal udfylde flere bundter - hvilket betyder parrene: “Forventet tekst” + “Sendte tegn til denne tekst” kan der være mange sådanne par. (Eksempel: 1. par venter på brugernavn, andet venter på adgangskode, tredje venter på prompt i privilegeret tilstand, fjerde par på adgangskode til privilegeret tilstand.)
Eksempel på automatisk logon på Cisco ASA:
Udløses manuelt med en knap i SecureCRT (en knap er endnu ikke oprettet og tilføjet til SecureCRT)
I SecureCRT kan du tildele et script til en knap. Knappen føjes til et panel, der er specielt oprettet til dette formål.
EN. Tilføjelse af et panel til grænsefladen: SecureCRT Menu => View => Button Bar
b. Tilføj en knap til panelet og tilføj et script. – Højreklik på knaplinjen og vælg "Ny knap..." fra kontekstmenuen.
V. I dialogboksen "Kortknap" i feltet "Handling" skal du vælge handlingen "Kør script" (funktionen).
Angiv en billedtekst til knappen. Farven på knapikonet. Afslut indstillingerne ved at klikke på Ok.
Note:
Panelet med knapper er meget nyttig funktionalitet.
1. Det er muligt, når du logger på en specifik session, at angive, hvilket panel der skal åbnes for denne fane som standard.
2. Det er muligt at indstille foruddefinerede handlinger for standardhandlinger med udstyr: vis vis version, vis running-config, gem konfiguration.
Der er ikke knyttet noget script til disse knapper. Kun handlingslinje:
Indstilling - så når du skifter til en session, åbnes det nødvendige panel med knapper i sessionsindstillingerne:
Det giver mening for kunden at opsætte individuelle scripts til Login og gå til panelet med hyppige kommandoer til leverandøren.
Når du trykker på Go Cisco-knappen, skifter panelet til Cisco Button Bar.
Eksempler på brug af simple og avancerede scripts. (Øv fra det virkelige liv.)
Simple scripts er nok til næsten alle lejligheder. Men engang havde jeg brug for at komplicere manuskriptet lidt – for at sætte fart på arbejdet. Denne komplikation anmodede blot om yderligere data i en dialogboks fra brugeren.
Anmodning om data fra brugeren ved hjælp af en dialogboks
Jeg havde 2 i dataanmodningsscriptet. Dette er værtsnavnet og den 4. oktet af IP-adressen. For at udføre denne handling - googlede jeg hvordan man gør det og fandt det på den officielle hjemmeside for SecureCRT (vandyke). - funktionaliteten kaldes prompt.
Denne del af scriptet bad om værtsnavn og numre fra den sidste oktet. Da der var 15 stykker udstyr. Og dataene blev præsenteret i en tabel, så kopierede jeg værdierne fra tabellen og indsatte dem i dialogboksene. Desuden fungerede manuskriptet selvstændigt.
FTP kopiering til netværksudstyr.
Dette script lancerede mit kommandovindue (shell) og kopierede data via FTP. Luk sessionen til sidst. Det er umuligt at bruge notesblok til dette, fordi kopiering tager meget lang tid, og dataene i FTP-bufferen vil ikke blive gemt så længe:
# $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()
Indtastning af brugernavn/adgangskode ved hjælp af et script
Hos en kunde blev adgangen til netværksudstyr direkte lukket. Det var muligt at komme ind i udstyret ved først at oprette forbindelse til Default Gateway, og fra det derefter til det tilsluttede udstyr. ssh-klienten indbygget i IOS/hardwaresoftwaren blev brugt til at oprette forbindelse. Derfor blev brugernavnet og adgangskoden anmodet i konsollen. Med nedenstående script blev brugernavn og adgangskode indtastet 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()
Bemærk: Der var 2 scripts. Et til administratorkontoen og det andet til eSIGHT-kontoen.
Script med mulighed for direkte at tilføje data under scriptudførelse.
Opgaven var at tilføje en statisk rute på alt netværksudstyr. Men gatewayen til internettet på hvert udstyr var forskellig (og den adskilte sig fra standardgatewayen). Følgende script viste routingtabellen, gik ind i konfigurationstilstanden, skrev ikke kommandoen til slutningen (IP-adressen på gatewayen til internettet) - jeg tilføjede denne del. Efter jeg trykkede på Enter, fortsatte scriptet med at udfø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 script, i linjen: crt.Screen.Send("ip-rute 10.10.10.8 255.255.255.252 ") er IP-adressen på gatewayen ikke tilføjet, og der er intet vognreturtegn. Scriptet venter på næste linje med tegnene "(config) #" Disse tegn dukkede op efter at jeg indtastede ip-adressen og indtastede.
Konklusion:
Når du skriver et script og udfører det, skal reglen følges: Tiden til at skrive et script og udføre et script bør aldrig være mere end den tid, der teoretisk bruges på at udføre det samme arbejde manuelt (copy/paste fra en notesblok, skrivning og fejlretning) en spillebog til ansible, skrivning og fejlretning af python-script). Det vil sige, at brugen af scriptet skal spare tid, og ikke spilde tid på engangsautomatisering af processer (dvs. når scriptet er unikt, og der ikke vil være flere gentagelser). Men hvis scriptet er unikt og automatisering med scriptet og skrivning/fejlretning af scriptet tager mindre tid end at gøre det på nogen anden måde (ansible, kommandovindue), så er scriptet den bedste løsning.
Fejlretning af et script. Scriptet vokser gradvist, debugging finder sted ved indkøring på den første, anden, tredje enhed, og på den fjerde vil scriptet højst sandsynligt være fuldt operationelt.
At køre et script (ved at indtaste brugernavn+adgangskode) med musen er normalt hurtigere end at kopiere brugernavn og adgangskode fra en notesblok. Men ikke sikkert ud fra et sikkerhedsmæssigt synspunkt.
Et andet (rigtigt) eksempel ved brug af et script: Du har ikke direkte adgang til netværksudstyr. Men der er behov for at konfigurere alt netværksudstyr (bring det ind i overvågningssystemet, konfigurer et ekstra brugernavn/adgangskode/snmpv3brugernavn/adgangskode). Der er adgang når du går til Core switchen, fra den åbner du SSH til andet udstyr. Hvorfor kan du ikke bruge Ansible. - Fordi vi løber ind i en grænse for antallet af tilladte samtidige sessioner på netværksudstyr (linje vty 0 4, brugergrænseflade vty 0 4) (et andet spørgsmål er, hvordan man starter forskelligt udstyr i Ansible med det samme SSH første hop).
Scriptet reducerer tid under lange operationer - for eksempel kopiering af filer via FTP. Når kopieringen er afsluttet, begynder scriptet straks at virke. En person bliver nødt til at se slutningen af kopieringen, derefter indse slutningen af kopieringen og derefter indtaste de relevante kommandoer. Scriptet gør det objektivt hurtigere.
Scripts er anvendelige, hvor det er umuligt at bruge værktøjer til massedatalevering: Konsol. Eller når nogle af dataene for udstyret er unikke: værtsnavn, administrations-ip-adresse. Eller når man skriver et program og fejlretter, er det sværere end at tilføje data modtaget fra udstyret, mens scriptet kører. - Et eksempel med et script til at foreskrive en rute, når hvert udstyr har sin egen IP-adresse hos internetudbyderen. (Mine kolleger skrev sådanne scripts - da DMVPN talte var over 3. Det var nødvendigt at ændre DMVPN-indstillingerne).
Casestudie: Konfiguration af indledende indstillinger på en ny switch ved hjælp af konsolportene:
A. Tilslut konsolkablet til enheden.
B. Kør scriptet
B. Ventede på udførelsen af scriptet
D. Tilslut konsolkablet til den næste enhed.
E. Hvis kontakten ikke er den sidste, skal du gå til trin B.
Som et resultat af manuskriptets arbejde:
den oprindelige adgangskode er indstillet på udstyret.
Brugernavn indtastet
enhedens unikke IP-adresse indtastes.
PS operationen skulle gentages. Fordi standard ssh ikke var konfigureret/deaktiveret. (Ja, det er min fejl.)
Et eksempel på et langt script med to forespørgsler: Værtsnavn og IP-adresse. Den blev skabt til forudindstilling af udstyr gennem konsollen (9600 baud). Og også for at forberede tilslutningen af udstyr til netværket.
Sådanne scripts er normalt ikke nødvendige, men mængden af udstyr er 15 stk. Tilladt hurtigere opsætning. Det var hurtigere at sætte udstyret op ved hjælp af SecureCRT Command-vinduet.
Oprettelse af en konto til ssh.
Et andet eksempel. Konfiguration sker 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 software: fra $99 (den mindste pris er kun for SecureCRT i et år) Den officielle hjemmeside
En softwarelicens købes én gang med support (til opdatering), derefter bruges softwaren med denne licens i ubegrænset tid.
Virker på Mac OS X og Windows operativsystemer.
Der er script-understøttelse (denne artikel)
Der er Kommandovindue
Seriel/Telnet/SSH1/SSH2/Shell-operativsystem