Avtomatiziranje vnosa v SecureCRT z uporabo skriptov

Omrežni inženirji se pogosto soočajo s kopiranjem/lepljenjem določenih fragmentov iz beležnice v konzolo. Običajno morate kopirati več parametrov: uporabniško ime/geslo in še kaj. Uporaba skriptov vam omogoča, da pospešite ta proces. VENDAR bi morali nalogi pisanja skripta in izvajanja skripta skupno vzeti manj časa kot ročna konfiguracija, sicer so skripti neuporabni.

Čemu je namenjen ta članek? Ta članek je iz serije Fast Start in je namenjen prihranku časa omrežnim inženirjem pri nastavljanju opreme (ena naloga) na več napravah. Uporablja programsko opremo SecureCRT in vgrajeno funkcijo izvajanja skripta.

Vsebina

Predstavitev

Program SecureCRT ima takoj vgrajen mehanizem za izvajanje skriptov. Čemu so terminalski skripti?

  • Avtomatski V/I in minimalno preverjanje V/I.
  • Pospešite izvajanje rutinskih nalog - zmanjšajte premore med nastavitvami opreme. (Dejansko zmanjšanje premorov, ki jih povzroči čas za izvajanje dejanj kopiranja/preteklih dejanj na isti strojni opremi, s 3 ali več fragmenti ukazov, ki se uporabijo za strojno opremo.)

Ta dokument zajema naloge:

  • Izdelava preprostih skript.
  • Izvajanje skriptov na SecureCRT.
  • Primeri uporabe preprostih in naprednih skriptov. (Vaja iz resničnega življenja.)

Izdelava preprostih skript.

Najenostavnejši skripti uporabljajo samo dva ukaza, Send in WaitForString. Ta funkcionalnost zadostuje za 90% (ali več) opravljenih nalog.

Skripte lahko delujejo v Pythonu, JS, VBS (Visual Basic), Perlu itd.

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()

Običajno datoteka s pripono "*.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

Običajno datoteka s pripono "*.vbs"

Ustvarite skript z vnosom skripta.

Omogoča vam avtomatizacijo postopka pisanja skripta. Začnete pisati scenarij. SecureCRT beleži ukaze in kasnejši odziv strojne opreme ter vam prikaže dokončan skript.

A. Začni pisati skript:
Meni SecureCRT => Skript => Začni snemati skript
b. Izvedite dejanja s konzolo (izvedite konfiguracijske korake v CLI).
V. Dokončajte pisanje scenarija:
Meni SecureCRT => Skript => Ustavi snemanje skripta…
Shranite datoteko skripta.

Primer izvedenih ukazov in shranjenega skripta:

Avtomatiziranje vnosa v SecureCRT z uporabo skriptov

Izvajanje skriptov na SecureCRT.

Po izdelavi/urejanju skripte se pojavi logično vprašanje: Kako aplicirati skripto?
Obstaja več načinov:

  • Zagon ročno iz menija Skript
  • Samodejni zagon po povezavi (prijavni skript)
  • Samodejna prijava brez uporabe skripta
  • Ročno sprožitev z gumbom v SecureCRT (gumb je treba še ustvariti in dodati v SecureCRT)

Zagon ročno iz menija Skript

Meni SecureCRT => Skript => Zaženi…
- Zadnjih 10 skriptov si je zapomnil in je na voljo za hiter zagon:
Meni SecureCRT => Skript => 1 "Ime datoteke skripta"
Meni SecureCRT => Skript => 2 "Ime datoteke skripta"
Meni SecureCRT => Skript => 3 "Ime datoteke skripta"
Meni SecureCRT => Skript => 4 "Ime datoteke skripta"
Meni SecureCRT => Skript => 5 "Ime datoteke skripta"

Samodejni zagon po povezavi (prijavni skript)

Nastavitve skripta za samodejno beleženje so konfigurirane za shranjeno sejo: Povezava => Dejanja prijave => Skript za prijavo

Avtomatiziranje vnosa v SecureCRT z uporabo skriptov

Samodejna prijava brez uporabe skripta

Možno je samodejno vnesti uporabniško ime ali geslo brez pisanja skripta, z uporabo samo vgrajene funkcionalnosti SecureCRT. V nastavitvah povezave “Connection” => Logon Actions => Automate logon - izpolniti morate več svežnjev - kar pomeni pare: “Pričakovano besedilo” + “Poslani znaki v to besedilo” takih parov je lahko veliko. (Primer: 1. par čaka na uporabniško ime, drugi čaka na geslo, tretji čaka na poziv v privilegiranem načinu, četrti par na geslo v privilegiranem načinu.)

Primer samodejne prijave v Cisco ASA:

Avtomatiziranje vnosa v SecureCRT z uporabo skriptov

Ročno sprožitev z gumbom v SecureCRT (gumb je treba še ustvariti in dodati v SecureCRT)

V SecureCRT lahko gumbu dodelite skript. Gumb je dodan na posebej za ta namen ustvarjeno ploščo.

A. Dodajanje plošče v vmesnik: Meni SecureCRT => Pogled => Vrstica z gumbi
b. Dodajte gumb na ploščo in dodajte skript. – Z desno miškino tipko kliknite vrstico z gumbi in v kontekstnem meniju izberite »Nov gumb…«.
V. V pogovornem oknu »Gumb zemljevida« v polju »Dejanje« izberite dejanje (funkcijo) »Zaženi skript«.
Določite napis za gumb. Barva ikone gumba. Nastavitve zaključimo s klikom na V redu.

Avtomatiziranje vnosa v SecureCRT z uporabo skriptov

Opomba:

Plošča z gumbi je zelo uporabna funkcionalnost.

1. Ko se prijavite v določeno sejo, lahko določite, katero ploščo želite privzeto odpreti za ta zavihek.

2. Možno je nastaviti vnaprej določena dejanja za standardna dejanja z opremo: prikaži prikaži različico, prikaži tekoče konfiguracije, shrani konfiguracijo.

Avtomatiziranje vnosa v SecureCRT z uporabo skriptov
Tem gumbom ni priložen noben skript. Samo akcijska linija:

Avtomatiziranje vnosa v SecureCRT z uporabo skriptov
Nastavitev - tako da se ob preklopu na sejo v nastavitvah seje odpre potrebna plošča z gumbi:

Avtomatiziranje vnosa v SecureCRT z uporabo skriptov
Smiselno je, da stranka nastavi posamezne skripte za prijavo in gre na ploščo s pogostimi ukazi za prodajalca.

Avtomatiziranje vnosa v SecureCRT z uporabo skriptov
Ko pritisnete gumb Go Cisco, se plošča preklopi na vrstico z gumbi Cisco.

Avtomatiziranje vnosa v SecureCRT z uporabo skriptov

Primeri uporabe preprostih in naprednih skriptov. (Vaja iz resničnega življenja.)

Preprosti scenariji so dovolj za skoraj vse priložnosti. Toda enkrat sem moral malo zakomplicirati scenarij - da bi pospešil delo. Ta zaplet je samo zahteval dodatne podatke v pogovornem oknu od uporabnika.

Zahtevanje podatkov od uporabnika z uporabo pogovornega okna

V skriptu zahteve za podatke sem imel 2. To je ime gostitelja in 4. oktet naslova IP. Za izvedbo tega dejanja - poguglal ​​sem, kako to storiti, in našel na uradni spletni strani SecureCRT (vandyke). - funkcionalnost se imenuje poziv.

	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(" 23r")
	crt.Screen.Send("quitr")
	crt.Screen.Send("sysname ")
	crt.Screen.Send(hostnamestr)
	crt.Screen.Send("r") 

Ta del skripta zahteva ime gostitelja in številke iz zadnjega okteta. Ker je bilo 15 kosov opreme. In podatki so bili predstavljeni v tabeli, nato sem kopiral vrednosti iz tabele in jih prilepil v pogovorna okna. Nadalje je scenarij deloval samostojno.

FTP kopiranje v omrežno opremo.

Ta skript je zagnal moje ukazno okno (lupino) in kopiral podatke prek FTP. Na koncu zaključite sejo. Za to ni mogoče uporabiti beležnice, ker kopiranje traja zelo dolgo in podatki v medpomnilniku FTP ne bodo shranjeni tako dolgo:

# $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()

Vnos uporabniškega imena/gesla s pomočjo skripte

Pri eni stranki je bil zaprt neposreden dostop do omrežne opreme. V opremo je bilo mogoče vstopiti tako, da se je najprej povezal s privzetim prehodom, iz njega pa nato še z nanj povezano opremo. Za povezavo je bil uporabljen odjemalec ssh, vgrajen v programsko opremo IOS/strojne opreme. V skladu s tem sta bila v konzoli zahtevana uporabniško ime in geslo. S spodnjim skriptom sta bila uporabniško ime in geslo vnesena samodejno:

# $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()

Opomba: Obstajata 2 skripta. Eden za skrbniški račun, drugi za račun eSIGHT.

Skript z možnostjo neposrednega dodajanja podatkov med izvajanjem skripta.

Naloga je bila dodati statično pot na vso omrežno opremo. Vendar je bil prehod do interneta na vsaki opremi drugačen (in razlikoval se je od privzetega prehoda). Naslednji skript je prikazal usmerjevalno tabelo, vstopil v konfiguracijski način, ni napisal ukaza do konca (IP naslov prehoda v internet) - ta del sem dodal. Ko sem pritisnil Enter, je skript nadaljeval z izvajanjem ukaza.

# $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()

V tem skriptu v vrstici: crt.Screen.Send("ip route 10.10.10.8 255.255.255.252 ") naslov IP prehoda ni dodan in ni znaka za vrnitev v prvi vrstico. Skript čaka na naslednjo vrstico z znaki "(config) #" Ti znaki so se pojavili, ko sem vnesel naslov ip in enter.

Zaključek:

Pri pisanju skripta in njegovem izvajanju je treba upoštevati pravilo: Čas za pisanje skripta in izvajanje skripta nikoli ne sme biti daljši od časa, ki ga teoretično porabimo za ročno opravljanje istega dela (kopiranje/prilepitev iz beležnice, pisanje in odpravljanje napak). priročnik za ansible, pisanje in razhroščevanje skripta python). To pomeni, da bi morala uporaba skripta prihraniti čas in ne izgubljati časa za enkratno avtomatizacijo procesov (tj. Ko je skript edinstven in se ne bo več ponavljalo). Če pa je skript edinstven in avtomatizacija s skriptom ter pisanje/razhroščevanje skripta traja manj časa kot izvajanje na kateri koli drug način (ansible, ukazno okno), potem je skript najboljša rešitev.
Odpravljanje napak v skriptu. Skript raste postopoma, odpravljanje napak poteka ob zagonu na prvi, drugi, tretji napravi, do četrte pa bo skript najverjetneje že popolnoma deloval.

Zagon skripta (z vnosom uporabniškega imena+gesla) z miško je običajno hitrejši od kopiranja uporabniškega imena in gesla iz beležke. Vendar ni varno z varnostnega vidika.
Drug (resničen) primer pri uporabi skripte: Nimate neposrednega dostopa do omrežne opreme. Vendar pa je treba konfigurirati vso omrežno opremo (prenesti jo v nadzorni sistem, konfigurirati dodatno uporabniško ime/geslo/snmpv3uporabniško ime/geslo). Dostop je, ko greste do stikala Core, od koder odprete SSH do druge opreme. Zakaj ne morete uporabiti Ansible. - Ker naletimo na omejitev števila dovoljenih sočasnih sej na omrežni opremi (linija vty 0 4, uporabniški vmesnik vty 0 4) (drugo vprašanje je, kako zagnati različno opremo v Ansibleu z istim prvim skokom SSH).

Skript skrajša čas med dolgimi operacijami - na primer kopiranje datotek prek FTP. Po končanem kopiranju začne skript takoj delovati. Oseba bo morala videti konec kopiranja, nato ugotoviti konec kopiranja in nato vnesti ustrezne ukaze. Scenarij to naredi objektivno hitreje.

Skripti so uporabni tam, kjer ni mogoče uporabiti orodij za dostavo množičnih podatkov: Konzola. Ali ko so nekateri podatki za opremo edinstveni: ime gostitelja, naslov IP za upravljanje. Ali pa je pri pisanju programa in odpravljanju napak to težje kot dodajanje podatkov, prejetih iz opreme, medtem ko se skript izvaja. - Primer s skripto za predpisovanje poti, ko ima vsaka oprema svoj IP naslov internetnega ponudnika. (Moji kolegi so napisali takšne skripte - ko je DMVPN govoril, je bilo več kot 3. Treba je bilo spremeniti nastavitve DMVPN).

Študija primera: Konfiguriranje začetnih nastavitev na novem stikalu z uporabo vrat konzole:

A. Priključite kabel konzole v napravo.
B. Zaženite skript
B. Čakal na izvedbo skripta
D. Priključite kabel konzole v naslednjo napravo.
E. Če stikalo ni zadnje, pojdite na korak B.

Kot rezultat dela skripta:

  • začetno geslo je nastavljeno na opremi.
  • Uporabniško ime vneseno
  • vnese se edinstven IP naslov naprave.

PS operacijo je bilo treba ponoviti. Ker privzeti ssh ni bil konfiguriran/onemogočen. (Da, to je moja napaka.)

Uporabljeni viri.

1. O ustvarjanju skriptov
2. Primeri scenarijev

Dodatek 1: Vzorci skriptov.


Primer dolgega skripta z dvema poizvedbama: ime gostitelja in naslov IP. Ustvarjen je za prednastavitev opreme preko konzole (9600 baud). In tudi za pripravo povezave opreme z omrežjem.

# $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()

Takšni skripti običajno niso potrebni, vendar je količina opreme 15 kosov. Omogoča hitrejšo nastavitev. Hitreje je bilo nastaviti opremo z ukaznim oknom SecureCRT.

Nastavitev računa za ssh.

Še en primer. Konfiguracija poteka tudi prek konzole.

# $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()


O SecureCRT:Plačljiva programska oprema: od 99 $ (najnižja cena je samo za SecureCRT za eno leto)
Uradna spletna stran
Licenca programske opreme se kupi enkrat, s podporo (za posodabljanje), nato se programska oprema s to licenco uporablja neomejeno časa.

Deluje na operacijskih sistemih Mac OS X in Windows.

Obstaja podpora za skripte (ta članek)
Obstaja Ukazno okno
Operacijski sistem Serial/Telnet/SSH1/SSH2/Shell

Vir: www.habr.com