Automatisering av inmatning i SecureCRT med hjÀlp av skript

NÀtverksingenjörer stöter ofta pÄ uppgiften att kopiera och klistra in specifika fragment frÄn en anteckning till konsolen. Dessa inkluderar vanligtvis flera parametrar: AnvÀndarnamn/lösenord och nÄgot ytterligare. AnvÀndning av skript kan pÄskynda denna process. MEN den totala tiden för att skriva och köra skriptet mÄste vara kortare Àn den manuella konfigureringen, annars Àr skripten vÀrdelösa.

Syftet med denna artikel. Den hÀr artikeln ingÄr i cykeln Snabbstart och syftar till att spara tid för nÀtverksingenjörer vid konfiguration av utrustning (en uppgift) pÄ flera enheter. Programvaran SecureCRT och den inbyggda funktionen för att köra skript anvÀnds.

InnehÄll

Introduktion

I SecureCRT finns en inbyggd mekanism för att köra skript. Vad behövs skript i terminalen för:

  • Automatiserad inmatning och utmatning samt minimal kontroll av inmatnings-/utmatningskorrekthet.
  • PĂ„skynda utförandet av rutinuppgifter – minska pauserna mellan konfigurationen av utrustningen. (De facto minskade pauser som orsakas av tiden för kopiera/klistra in pĂ„ samma utrustning nĂ€r tre eller fler kommandon behöver tillĂ€mpas pĂ„ utrustningen.)

I detta dokument behandlas följande uppgifter:

  • Skapa de enklaste skripten.
  • Kör skript pĂ„ SecureCRT.
  • Exempel pĂ„ anvĂ€ndning av enkla och avancerade skript. (Praktik frĂ„n verkliga livet.)

Skapa de enklaste skripten.

De enklaste skripten anvÀnder endast tvÄ kommandon: Send och WaitForString. Denna funktionalitet rÀcker för 90% (eller mer) av de uppgifter som utförs.

Skript kan skrivas pÄ sprÄken Python, JS, VBS (Visual Basic), Perl osv.

Python

# $language = "Python"
# $interface = "1.0"
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("Password")
  crt.Screen.Synchronous = False
main()

Vanligtvis en fil med filÀndelsen «*.py»

VBS

# $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 filÀndelsen «*.vbs»

Skapa ett skript med hjÀlp av skriptrekord.

Det möjliggör automatiseringen av skriptförfattande. Du startar skriptrekordningen. SecureCRT registrerar kommandona och den efterföljande utrustningens svar och ger dig ett fÀrdigt skript.

a. Starta skriptrekordningen:
Menyn SecureCRT => Skript => Starta inspelning av skript
b. Utför ÄtgÀrder med konsolen (utför ÄtgÀrder för att konfigurera i CLI).
c. Avsluta skriptrekordningen:
Menyn SecureCRT => Skript => Stoppa inspelning av skript

Spara filen med skriptet.

Exempel pÄ utförda kommandon och det sparade skriptet:

Automatisering av inmatning i SecureCRT med hjÀlp av skript

Kör skript pÄ SecureCRT.

Efter skapandet/redigerandet av skriptet uppstÄr den naturliga frÄgan: Hur tillÀmpar man skriptet?
Det finns flera sÀtt:

  • Manuell körning frĂ„n menyn Skript
  • Automatisk körning efter anslutning (logonskript)
  • Automatisk inloggning utan att anvĂ€nda skript
  • Kör manuellt med hjĂ€lp av en knapp i SecureCRT (knappen mĂ„ste fortfarande skapas och lĂ€ggas till i SecureCRT)

Manuell körning frÄn menyn Skript

Menyn SecureCRT => Skript => Kör

— De senaste 10 skripten kommer ihĂ„g och Ă€r tillgĂ€ngliga för snabb start:
Menyn SecureCRT => Skript => 1 «Filnamn pÄ skriptet»
Menyn SecureCRT => Skript => 2 «Filnamn pÄ skriptet»
Menyn SecureCRT => Skript => 3 «Filnamn pÄ skriptet»
Menyn SecureCRT => Skript => 4 «Filnamn pÄ skriptet»
Menyn SecureCRT => Skript => 5 «Filnamn pÄ skriptet»

Automatisk körning efter anslutning (logonskript)

InstÀllningar för automatisk skripting för inloggning stÀlls in för den sparade sessionen: Anslutning => InloggningsÄtgÀrder => Inloggningsskript

Automatisering av inmatning i SecureCRT med hjÀlp av skript

Automatisk inloggning utan att anvÀnda skript

Det finns möjlighet till automatisk inmatning av anvĂ€ndarnamn och lösenord utan att skriva skript, bara med hjĂ€lp av den inbyggda funktionaliteten i SecureCRT. I instĂ€llningarna för anslutning «Anslutning» => InloggningsĂ„tgĂ€rder => Automatisera inloggning – mĂ„ste flera par fyllas i – dĂ€r varje par innebĂ€r: «FörvĂ€ntad text» + «Skickade tecken till denna text» det kan finnas mĂ„nga sĂ„dana par. (Exempel: 1:a paret förvĂ€ntar inmatning av anvĂ€ndarnamn, det andra förvĂ€ntar inmatning av lösenord, det tredje förvĂ€ntar en inbjudan till privilegierat lĂ€ge, det fjĂ€rde lösenordet för privilegierat lĂ€ge.)

Exempel pÄ automatisk inloggning pÄ Cisco ASA:

Automatisering av inmatning i SecureCRT med hjÀlp av skript

Kör manuellt med hjÀlp av en knapp i SecureCRT (knappen mÄste fortfarande skapas och lÀggas till i SecureCRT)

I SecureCRT kan du tilldela ett skript till en knapp. Knappen lÀggs till pÄ en speciellt skapad panel för detta ÀndamÄl.

a. LÀgg till panelen i grÀnssnittet: Menyn SecureCRT => Vy => KnappfÀlt
b. LĂ€gg till en knapp pĂ„ panelen och koppla skriptet. – Högerklicka pĂ„ panelen Button Bar och vĂ€lj «Ny knapp » i snabbmenyn.
c. I dialogrutan «Karta knapp» vĂ€ljer vi Ă„tgĂ€rd (funktion) «Kör skript» i fĂ€ltet «ÅtgĂ€rd».
Ange knappens etikett. FÀrg för knappikonen. Avsluta instÀllningarna genom att trycka pÄ Ok.

Automatisering av inmatning i SecureCRT med hjÀlp av skript

AnmÀrkning:

Knappanelen Àr en mycket anvÀndbar funktion.

1. Det finns möjlighet att vid inloggning till en viss session ange vilken panel som ska öppnas som standard för den fliken.

2. Det finns möjlighet att för standardÄtgÀrder med utrustningen ange fördefinierade ÄtgÀrder: visa show version, show running-config, spara konfiguration.

Automatisering av inmatning i SecureCRT med hjÀlp av skript
Dessa knappar Àr inte kopplade till nÄgot skript. Endast en rad med ÄtgÀrder:

Automatisering av inmatning i SecureCRT med hjÀlp av skript
InstĂ€llning – för att öppna den nödvĂ€ndiga knapppanelen nĂ€r du vĂ€xlar till sessionen görs i instĂ€llningarna för sessionen:

Automatisering av inmatning i SecureCRT med hjÀlp av skript
För kunden Àr det meningsfullt att stÀlla in individuella skript för inloggning och övergÄng till panelen med frekventa kommandon för leverantören.

Automatisering av inmatning i SecureCRT med hjÀlp av skript
Vid tryck pĂ„ knappen Go Cisco – vĂ€xlar panelen till Cisco Button Bar.

Automatisering av inmatning i SecureCRT med hjÀlp av skript

Exempel pÄ anvÀndning av enkla och avancerade skript. (Praktik frÄn verkliga livet.)

Enkla skript rĂ€cker till nĂ€stan alla livssituationer. Men en gĂ„ng behövde jag göra skriptet lite mer komplicerat – för att snabba upp arbetet. Denna komplicering – begĂ€rde bara ytterligare uppgifter i en dialogruta frĂ„n anvĂ€ndaren.

BegÀr data frÄn anvÀndaren med en dialogruta

Jag hade 2 datakrav i mitt skript. Det var Hostname och den 4:e oktetten av IP-adressen. För att utföra denna Ă„tgĂ€rd – googlade jag hur man gör det och hittade pĂ„ den officiella sidan för SecureCRT (vandyke). – funktionen heter prompt.

	crt.Screen.WaitForString("-Vlanif200]")
	hostnamestr = crt.Dialog.Prompt("Ange vÀrdnamn:", "hostname", "", False)
	ipaddressstr = crt.Dialog.Prompt("Ange ip-adress:", "ip", "", False)
	crt.Screen.Send("ip address 10.10.10.")
	crt.Screen.Send(ipaddressstr)
	crt.Screen.Send(" 23r")
	crt.Screen.Send("quitr")
	crt.Screen.Send("sysname ")
	crt.Screen.Send(hostnamestr)
	crt.Screen.Send("r") 

Denna del av skriptet begÀrde Hostname och siffrorna frÄn den sista oktetten. Eftersom det fanns 15 enheter och uppgifterna presenterades i en tabell, kopierade jag vÀrden frÄn tabellen och klistrade dem i dialogrutorna. DÀrefter fungerade skriptet sjÀlvstÀndigt.

FTP kopiering till nÀtverksutrustning.

Detta skript öppnade ett kommandofönster (shell) hos mig och kopierade data via FTP. Vid avslut stÀngde den sessionen. Att anvÀnda anteckningsblock för detta Àr omöjligt, eftersom kopieringen tar för lÄng tid och data i FTP-bufferen inte kommer 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 hjÀlp av skript

En av kunderna hade direkt Ätkomst till nÀtverksutrustningen stÀngd. Man kunde nÄ utrustningen genom att först koppla upp sig mot standardgatewayen, och sedan frÄn den till den anslutna utrustningen. För anslutningen anvÀndes ssh-klienten inbyggd i IOS/utrustningens programvara. AnvÀndarnamn och lösenord efterfrÄgades i konsolen. Med hjÀlp av skriptet nedan angavs anvÀndarnamn och lösenord 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()

Notera: Det fanns tvÄ skript. Ett för administratörskontot och ett annat för eSIGHT-kontot.

Skriptet med möjlighet att direkt skriva in data under körning.

Uppgiften var att lĂ€gga till en statisk rutt pĂ„ all nĂ€tverksutrustning. Men gatewayen till internet pĂ„ varje utrustning var unik (och skilde sig frĂ„n standardgatewayen). Följande skript visade routingtavlan, gick in i konfigurationslĂ€ge, och kom inte till slutet av kommandot (IP-adressen för gatewayen till internet) – denna del fick jag fylla i. Efter att jag tryckte pĂ„ Enter fortsatte skriptet med 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 detta skript i raden: crt.Screen.Send(«ip route 10.10.10.8 255.255.255.252 „) saknas IP-adressen för gatewayen och det finns inga radbrytningstecken. Skriptet vĂ€ntar pĂ„ framtrĂ€dandet av nĂ€sta rad med symbolerna «(config)#». Dessa symboler dök upp efter att jag angivit ip-adressen och tryckt pĂ„ enter.

Slutsats:

Vid skrivande och körning av skriptet mÄste regeln följas: Tiden för att skriva skriptet och köra skriptet fÄr aldrig vara lÀngre Àn den tid som teoretiskt skulle krÀvas för att utföra samma arbete manuellt (copy/paste frÄn anteckningsbok, skriva och felsöka playbook för ansible, skriva och felsöka Python-skript). Det vill sÀga, anvÀndningen av skriptet bör spara tid, inte slösa tid pÄ engÄngsautomatisering av processer (dvs nÀr skriptet Àr unikt och repetitioner inte kommer att ske). Men om skriptet Àr unikt och automatiseringen med skriptet och skrivandet/felsökningen tar mindre tid Àn att utföra pÄ nÄgot annat sÀtt (ansible, kommandofönster), dÄ Àr skriptet den bÀsta lösningen.
Felsökning av skriptet. Skriptet vÀxer successivt, felsökningen sker under testning pÄ den första, andra, tredje enheten, och till den fjÀrde kommer skriptet förmodligen att vara helt fungera.

Att köra skriptet (med inmatning av anvÀndarnamn + lösenord) med musen sker vanligtvis snabbare Àn att kopiera anvÀndarnamn och lösenord frÄn anteckningsblocket. Men det Àr inte sÀkert ur sÀkerhetssynpunkt.
Ett annat (verkligt) exempel pĂ„ nĂ€r skriptet anvĂ€nds: Du har inte direkt tillgĂ„ng till nĂ€tverksutrustningen. Men det finns ett behov av att göra ytterligare konfigurationer pĂ„ all nĂ€tverksutrustning (lĂ€gga till i övervakningssystemet, justera ytterligare anvĂ€ndarnamn/lösenord/snmpv3anvĂ€ndarnamn/lösenord). Du har tillgĂ„ng nĂ€r du loggar in pĂ„ kĂ€rnvĂ€xeln och dĂ€rifrĂ„n öppnar SSH till annan utrustning. Varför kan man inte anvĂ€nda Ansible? — För att vi stöter pĂ„ begrĂ€nsningen av antalet tillĂ„tna samtidiga sessioner pĂ„ nĂ€tverksutrustningen (line vty 0 4, user-interface vty 0 4) (en annan frĂ„ga Ă€r hur man i Ansible har olika utrustning med samma SSH förstahop).

Skriptet minskar tiden vid lĂ„ngvariga operationer – exempelvis vid överföring av filer via FTP. Efter att överföringen Ă€r klar börjar skriptet genast att arbeta. En person mĂ„ste se slutet pĂ„ överföringen, sedan förstĂ„ att överföringen Ă€r klar, och sedan skriva de lĂ€mpliga kommandona. Skriptet gör detta objektivt snabbare.

Skript tillĂ€mpas dĂ€r det Ă€r omöjligt att anvĂ€nda massdataöverföringsmedel: Konsolen. Eller nĂ€r en del av datan för utrustningen Ă€r unik: vĂ€rdnamn, administrativ IP-adress. Eller nĂ€r det Ă€r svĂ„rare att skriva ett program och debugga det Ă€n att lĂ€gga till data som erhĂ„llits frĂ„n utrustningen under skriptets körning. — Exempel med skript för att ange en rutt, nĂ€r varje utrustning har en egen IP-adress frĂ„n internetleverantören. (Mina kollegor skrev sĂ„dana skript — nĂ€r DMVPN spoke var över 300. Det var nödvĂ€ndigt att Ă€ndra DMVPN-instĂ€llningarna).

Exempel frÄn praktiken: Ange initiala instÀllningar pÄ en ny vÀxel via konsolportar:

A. Anslöt konsolkabeln till enheten.
B. Startade skriptet.
C. VÀntade pÄ att skriptet skulle genomföras.
D. Kopplade om konsolkabeln till nÀsta enhet.
E. Om switchen inte Àr den sista, gÄ tillbaka till punkt B.

Sammanfattningsvis av skriptets arbete:

  • ett startlösenord har angetts pĂ„ utrustningen.
  • anvĂ€ndarnamn har angetts.
  • den unika IP-adressen för enheten har angetts.

P. S. operationen fick upprepas. Eftersom default ssh visade sig vara ospecificerat/avstÀngt. (Ja, det Àr mitt misstag.)

AnvÀnda kÀllor.

1. Om skapandet av skript.
2. Exempel pÄ skript

Bilaga 1: Exempel pÄ skript.


Exempel pĂ„ ett lĂ„ngt skript med tvĂ„ förfrĂ„gningar: VĂ€rdnamn och IP-adress. Skapades för att förinstĂ€lla hĂ„rdvara via konsolen (9600 baud). Även för att förbereda anslutning av hĂ„rdvara till nĂ€tverket.

# $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.Send("sysr")
	crt.Screen.WaitForString("]")
	crt.Screen.Send("interface Vlanif 1r")
	crt.Screen.WaitForString("Vlanif1]")
	crt.Screen.Send("undo ip addressr")
	crt.Screen.Send("shutdownr")
	crt.Screen.Send("vlan 100r")
	crt.Screen.Send(" description description1r")
	crt.Screen.Send(" name description1r")
	crt.Screen.Send("vlan 110r")
	crt.Screen.Send(" description description2r")
	crt.Screen.Send(" name description2r")
	crt.Screen.Send("vlan 120r")
	crt.Screen.Send(" description description3r")
	crt.Screen.Send(" name description3r")
	crt.Screen.Send("vlan 130r")
	crt.Screen.Send(" description description4r")
	crt.Screen.Send(" name description4r")
	crt.Screen.Send("vlan 140r")
	crt.Screen.Send(" description description5r")
	crt.Screen.Send(" name description5r")
	crt.Screen.Send("vlan 150r")
	crt.Screen.Send(" description description6r")
	crt.Screen.Send(" name description6r")
	crt.Screen.Send("vlan 160r")
	crt.Screen.Send(" description description7r")
	crt.Screen.Send(" name description7r")
	crt.Screen.Send("vlan 170r")
	crt.Screen.Send(" description description8r")
	crt.Screen.Send(" name description8r")               
	crt.Screen.Send("vlan 180r")
	crt.Screen.Send(" description description9r")
	crt.Screen.Send(" name description9r")
	crt.Screen.Send("vlan 200r")
	crt.Screen.Send(" description description10r")
	crt.Screen.Send(" name description10r")
	crt.Screen.Send("vlan 300r")
	crt.Screen.Send(" description description11r")
	crt.Screen.Send(" name description11r")
	crt.Screen.Send("quitr")
	crt.Screen.WaitForString("]")
	crt.Screen.Send("stp region-configurationr")
	crt.Screen.Send("region-name descr")
	crt.Screen.Send("active region-configurationr")
	crt.Screen.WaitForString("mst-region]")
	crt.Screen.Send("quitr")
	crt.Screen.Send("stp instance 0 priority 57344r")
	crt.Screen.WaitForString("]")
	crt.Screen.Send("interface range GigabitEthernet 0/0/1 to GigabitEthernet 0/0/42r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("description Usersr")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("port link-type hybridr")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("voice-vlan 100 enabler")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("voice-vlan legacy enabler")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("port hybrid pvid vlan 120r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("port hybrid tagged vlan 100r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("port hybrid untagged vlan 120r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("stp edged-port enabler")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("trust 8021pr")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control broadcast min-rate 1000 max-rate 1500r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control multicast min-rate 1000 max-rate 1500r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control action blockr")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control enable trapr")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("quitr")
	crt.Screen.Send("interface range GigabitEthernet 0/0/43 to GigabitEthernet 0/0/48r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("description Printersr")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("port link-type accessr")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("port default vlan 130r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("stp edged-port enabler")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("trust 8021pr")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control broadcast min-rate 1000 max-rate 1500r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control multicast min-rate 1000 max-rate 1500r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control action blockr")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control enable trapr")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("quitr")
	crt.Screen.Send("interface range XGigabitEthernet 0/0/1 to XGigabitEthernet 0/0/2r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("description uplinkr")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("port link-type trunkr")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("port trunk allow-pass vlan 100 110 120 130 140 150 160 170 180 200r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("port trunk allow-pass vlan 300r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control broadcast min-rate 1000 max-rate 1500r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control multicast min-rate 1000 max-rate 1500r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control action blockr")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control enable trapr")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("quitr")
	crt.Screen.Send("ntp-service unicast-server 10.10.10.4r")
	crt.Screen.Send("ntp-service unicast-server 10.10.10.2r")
	crt.Screen.Send("ntp-service unicast-server 10.10.10.134r")
	crt.Screen.Send("ip route-static 0.0.0.0 0.0.0.0 10.10.10.254r")
	crt.Screen.Send("interface Vlanif 200r")
	crt.Screen.WaitForString("-Vlanif200]")
	crt.Screen.Send("r")
	crt.Screen.WaitForString("-Vlanif200]")
	crt.Screen.Send("r")
	crt.Screen.WaitForString("-Vlanif200]")
	crt.Screen.Send("r")
	crt.Screen.WaitForString("-Vlanif200]")
	crt.Screen.Send("r")
	crt.Screen.WaitForString("-Vlanif200]")
	crt.Screen.Send("r")
	crt.Screen.WaitForString("-Vlanif200]")
	crt.Screen.Send("r")
	crt.Screen.WaitForString("-Vlanif200]")
	crt.Screen.Send("r")
	crt.Screen.WaitForString("-Vlanif200]")
        hostnamestr = crt.Dialog.Prompt("Enter hostname:", "hostname", "", False)
        ipaddressstr = crt.Dialog.Prompt("Enter ip address:", "ip", "", False)
	crt.Screen.Send("ip address 10.10.10.")
	crt.Screen.Send(ipaddressstr)
	crt.Screen.Send(" 24r")
	crt.Screen.Send("quitr")
	crt.Screen.Send("sysname ")
	crt.Screen.Send(hostnamestr)
	crt.Screen.Send("r")
	crt.Screen.WaitForString("]")
	crt.Screen.Synchronous = False
main()

SÄdana skript behövs vanligtvis inte, men med utrustningen - 15 enheter - kunde installationen pÄskyndas. DÀrefter var det snabbare att konfigurera utrustningen med hjÀlp av SecureCRT Command window.

Konfigurera ett konto för ssh.

Ett annat exempel. Konfigurering 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:Betalprogram: frÄn 99 $ (det lÀgsta priset endast för SecureCRT för ett Är)
Officiell webbplats
Licensen för programvaran köps en gÄng, med support (för uppdateringar), och programvaran anvÀnds sedan med denna licens utan tidsbegrÀnsning.

Fungerar pÄ operativsystemen Mac OS X och Windows.

Det finns stöd för skript (denna artikel)
Det finns Command Window
Serial/Telnet/SSH1/SSH2/Shell för operativsystemet

KĂ€lla: habr.com

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster