Automatisera inmatning i SecureCRT med hjälp av skript
Nätverksingenjörer står ofta inför uppgiften att kopiera/klistra in vissa fragment från ett anteckningsblock till konsolen. Du måste vanligtvis kopiera flera parametrar: Användarnamn/Lösenord och något annat. Användningen av skript gör att du kan påskynda denna process. MEN uppgifterna att skriva skriptet och köra skriptet bör ta kortare tid totalt än manuell konfiguration, annars är skripten värdelösa.
Vad är den här artikeln till för? Den här artikeln är från Fast Start-serien och syftar till att spara tid för nätverksingenjörer när de installerar utrustning (en enda uppgift) på flera enheter. Använder SecureCRT-programvara och inbyggd skriptexekveringsfunktion. Innehåll
SecureCRT-programmet har en inbyggd skriptexekveringsmekanism direkt. Vad är terminalskript till för?
Automatiserad I/O och minimal I/O-validering.
Snabba upp utförandet av rutinuppgifter - minska pauser mellan utrustningsinställningar. (De facto minskning av pauser orsakade av tid för att utföra kopierings-/tidigare åtgärder på samma hårdvara, med 3 eller fler kommandofragment som ska tillämpas på hårdvaran.)
Detta dokument täcker uppgifterna:
Skapande av enkla skript.
Köra skript på SecureCRT.
Exempel på att använda enkla och avancerade skript. (Öva från verkliga livet.)
Skapande av enkla skript.
De enklaste skripten använder bara två kommandon, Send och WaitForString. Denna funktion räcker för 90 % (eller mer) av de utförda uppgifterna.
Skript kan fungera 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
Vanligtvis en fil med tillägget "*.vbs"
Skapa ett skript med hjälp av en skriptpost.
Låter dig automatisera processen att skriva ett manus. Du börjar skriva ett manus. SecureCRT registrerar kommandona och det efterföljande hårdvarusvaret och visar det färdiga skriptet åt dig.
A. Börja skriva manus:
SecureCRT Meny => Skript => Börja spela in skript
b. Utför åtgärder med konsolen (utför konfigurationssteg i CLI).
V. Skriv klart manuset:
SecureCRT-meny => Skript => Stoppa inspelning av manus...
Spara skriptfilen.
Exempel på körda kommandon och sparat skript:
Köra skript på SecureCRT.
Efter att ha skapat/redigerat manuset uppstår en naturlig fråga: Hur applicerar man manuset?
Det finns flera sätt:
Körs manuellt från Script-menyn
Automatisk start efter anslutning (inloggningsskript)
Automatisk inloggning utan att använda ett skript
Utlöses manuellt med en knapp i SecureCRT (en knapp har ännu inte skapats och lagts till i SecureCRT)
Körs manuellt från Script-menyn
SecureCRT Menu => Skript => Kör...
- De senaste 10 skripten kommer ihåg och tillgängliga för snabbstart:
SecureCRT-meny => Skript => 1 "Skriptfilnamn"
SecureCRT-meny => Skript => 2 "Skriptfilnamn"
SecureCRT-meny => Skript => 3 "Skriptfilnamn"
SecureCRT-meny => Skript => 4 "Skriptfilnamn"
SecureCRT-meny => Skript => 5 "Skriptfilnamn"
Automatisk start efter anslutning (inloggningsskript)
Inställningar för automatiska loggningsskript är konfigurerade för den sparade sessionen: Anslutning => Inloggningsåtgärder => Inloggningsskript
Automatisk inloggning utan att använda ett skript
Det är möjligt att automatiskt ange användarnamnet för lösenordet utan att skriva ett skript, med endast den inbyggda funktionaliteten i SecureCRT. I anslutningsinställningarna “Anslutning” => Inloggningsåtgärder => Automatisera inloggning – du måste fylla i flera paket – vilket innebär paren: “Förväntad text” + “Skickade tecken till denna text” kan det finnas många sådana par. (Exempel: 1:a paret väntar på användarnamn, andra väntar på lösenord, tredje väntar på prompt i privilegierat läge, fjärde paret på privilegierat läge lösenord.)
Exempel på automatisk inloggning på Cisco ASA:
Utlöses manuellt med en knapp i SecureCRT (en knapp har ännu inte skapats och lagts till i SecureCRT)
I SecureCRT kan du tilldela ett skript till en knapp. Knappen läggs till i en panel speciellt skapad för detta ändamål.
A. Lägga till en panel till gränssnittet: SecureCRT Menu => View => Button Bar
b. Lägg till en knapp på panelen och lägg till ett skript. – Högerklicka på knappraden och välj "Ny knapp..." från snabbmenyn.
V. I "Map Button"-dialogrutan, i "Action"-fältet, välj "Kör script"-åtgärden (funktionen).
Ange en bildtext för knappen. Färgen för knappikonen. Avsluta inställningarna genom att klicka på Ok.
Notera:
Panelen med knappar är mycket användbar funktionalitet.
1. Det är möjligt, när du loggar in på en specifik session, att ange vilken panel som ska öppnas för denna flik som standard.
2. Det är möjligt att ställa in fördefinierade åtgärder för standardåtgärder med utrustning: visa visa version, visa running-config, spara konfiguration.
Inget skript är kopplat till dessa knappar. Endast åtgärdsrad:
Inställning - så att när du byter till en session öppnas den nödvändiga panelen med knappar i sessionsinställningarna:
Det är vettigt för kunden att ställa in individuella skript för inloggning och gå till panelen med frekventa kommandon för leverantören.
När du trycker på Go Cisco-knappen växlar panelen till Cisco Button Bar.
Exempel på att använda enkla och avancerade skript. (Öva från verkliga livet.)
Enkla manus räcker till nästan alla tillfällen. Men en gång behövde jag komplicera manuset lite – för att påskynda arbetet. Denna komplikation begärde helt enkelt ytterligare data i en dialogruta från användaren.
Begär data från användaren med hjälp av en dialogruta
Jag hade 2 i databegäransskriptet. Detta är värdnamnet och den fjärde oktetten av IP-adressen. För att utföra denna åtgärd - jag googlade hur man gör det och hittade det på den officiella webbplatsen för SecureCRT (vandyke). - Funktionaliteten kallas prompt.
Den här delen av skriptet bad om värdnamn och nummer från den sista oktetten. Eftersom det fanns 15 stycken utrustning. Och data presenterades i en tabell, sedan kopierade jag värdena från tabellen och klistrade in dem i dialogrutorna. Vidare fungerade manuset självständigt.
FTP-kopiering till nätverksutrustning.
Det här skriptet startade mitt kommandofönster (skal) och kopierade data via FTP. Stäng sessionen i slutet. Det är omöjligt att använda anteckningsblock för detta, eftersom kopieringen tar väldigt lång tid och data i FTP-bufferten kommer inte att lagras 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()
Ange användarnamn/lösenord med ett skript
Hos en kund stängdes direkt åtkomst till nätverksutrustning. Det var möjligt att komma in i utrustningen genom att först ansluta till Default Gateway och från den sedan till utrustningen som var ansluten till den. ssh-klienten inbyggd i IOS/hårdvaruprogramvaran användes för att ansluta. Följaktligen begärdes användarnamnet och lösenordet i konsolen. Med skriptet nedan angavs användarnamnet och lösenordet automatiskt:
# $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()
Obs: Det fanns 2 skript: ett för administratörskontot, det andra för eSIGHT-kontot.
Skript med möjlighet att direkt lägga till data under skriptkörning.
Uppgiften var att lägga till en statisk rutt på all nätverksutrustning. Men gatewayen till Internet på varje utrustning var annorlunda (och den skiljde sig från standardgatewayen). Följande skript visade routingtabellen, gick in i konfigurationsläget, skrev inte kommandot till slutet (IP-adressen för gatewayen till Internet) - jag lade till den här delen. Efter att jag tryckte på Enter fortsatte skriptet att köra kommandot.
# $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 det här skriptet, på raden: crt.Screen.Send("ip route 10.10.10.8 255.255.255.252 ") läggs inte IP-adressen till gatewayen till och det finns inget vagnreturtecken. Skriptet väntar på nästa rad med tecknen "(config) #" Dessa tecken dök upp efter att jag skrev in ip-adressen och skrev in.
slutsats:
När man skriver ett manus och kör det måste regeln följas: Tiden för att skriva ett manus och exekvera ett manus bör aldrig vara mer än den tid man teoretiskt lägger ner på att göra samma arbete manuellt (kopiera/klistra in från ett anteckningsblock, skriva och felsöka en spelbok för ansible, skriva och felsöka python-skript). Det vill säga att användningen av skriptet ska spara tid och inte slösa tid på engångsautomatisering av processer (dvs när skriptet är unikt och det inte blir fler upprepningar). Men om skriptet är unikt och automatisering med skriptet och att skriva/felsöka skriptet tar mindre tid än att göra det på något annat sätt (ansible, kommandofönster), så är skriptet den bästa lösningen.
Felsökning av ett skript. Skriptet växer gradvis, felsökning sker vid inkörningen på den första, andra, tredje enheten, och vid den fjärde kommer skriptet med största sannolikhet att vara fullt fungerande.
Att köra ett skript (genom att ange användarnamn+lösenord) med musen är vanligtvis snabbare än att kopiera användarnamn och lösenord från ett anteckningsblock. Men inte säkert ur säkerhetssynpunkt.
Ett annat (riktigt) exempel när du använder ett script: Du har inte direkt tillgång till nätverksutrustning. Men det finns ett behov av att konfigurera all nätverksutrustning (ta in den i övervakningssystemet, konfigurera ytterligare ett användarnamn/lösenord/snmpv3användarnamn/lösenord). Det finns åtkomst när du går till Core-switchen, från den öppnar du SSH till annan utrustning. Varför kan du inte använda Ansible. - Eftersom vi stöter på en gräns för antalet tillåtna samtidiga sessioner på nätverksutrustning (linje vty 0 4, användargränssnitt vty 0 4) (en annan fråga är hur man startar olika utrustningar i Ansible med samma SSH första hopp).
Skriptet minskar tiden under långa operationer – till exempel kopiering av filer via FTP. Efter att kopieringen är klar börjar skriptet omedelbart att fungera. En person kommer att behöva se slutet av kopieringen, sedan inse slutet av kopieringen och sedan ange lämpliga kommandon. Manuset gör det objektivt snabbare.
Skript är tillämpliga där det är omöjligt att använda verktyg för massdataleverans: Konsol. Eller när en del av data för utrustningen är unik: värdnamn, hanterings-ip-adress. Eller när man skriver ett program och felsöker är det svårare än att lägga till data som tas emot från utrustningen medan skriptet körs. - Ett exempel med ett script för att föreskriva en rutt, när varje utrustning har sin egen IP-adress till internetleverantören. (Mina kollegor skrev sådana skript - när DMVPN talade var över 3. Det var nödvändigt att ändra DMVPN-inställningarna).
Fallstudie: Konfigurera initiala inställningar på en ny switch med hjälp av konsolportarna:
A. Anslut konsolkabeln till enheten.
B. Kör skriptet
B. Väntade på körningen av manuset
D. Anslut konsolkabeln till nästa enhet.
E. Om omkopplaren inte är den sista, gå till steg B.
Som ett resultat av manusets arbete:
det ursprungliga lösenordet är inställt på utrustningen.
Användarnamn angett
enhetens unika IP-adress anges.
PS operationen var tvungen att upprepas. Eftersom standard ssh inte var konfigurerad/inaktiverad. (Ja, detta är mitt misstag.)
Ett exempel på ett långt skript, med två frågor: Värdnamn och IP-adress. Den skapades för att förinställa utrustning via konsolen (9600 baud). Och även för att förbereda anslutningen av utrustning till nätverket.
Sådana skript behövs vanligtvis inte, men mängden utrustning är 15 st. Tillåtet snabbare installation. Det gick snabbare att ställa in utrustningen med SecureCRT Command-fönstret.
Skapa ett konto för ssh.
Ett annat exempel. Konfiguration sker också via konsolen.
# $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:Betald programvara: från $99 (det lägsta priset är endast för SecureCRT i ett år) Officiell hemsida
En mjukvarulicens köps en gång, med support (för uppdatering), sedan används programvaran med denna licens under en obegränsad tid.
Fungerar på Mac OS X och Windows operativsystem.
Det finns skriptstöd (den här artikeln)
Det finns kommandofönstret
Operativsystem Serial/Telnet/SSH1/SSH2/Shell