SecureCRT-i sisestamise automatiseerimine skriptide abil

Võrguinsenerid seisavad sageli silmitsi ülesandega kopeerida/kleepida teatud fragmente märkmikust konsooli. Tavaliselt tuleb kopeerida mitu parameetrit: Kasutajanimi/Parool ja midagi muud. Skriptide kasutamine võimaldab teil seda protsessi kiirendada. AGA skripti kirjutamise ja skripti täitmise ülesanded peaksid võtma vähem aega kui käsitsi seadistamine, vastasel juhul on skriptid kasutud.

Milleks see artikkel mõeldud on? See artikkel pärineb Fast Start seeriast ja selle eesmärk on säästa võrguinseneride aega seadmete seadistamisel (üks ülesanne) mitmes seadmes. Kasutab SecureCRT tarkvara ja sisseehitatud skripti täitmise funktsionaalsust.

Sisu

Sissejuhatus

SecureCRT programmil on sisseehitatud skripti käivitamise mehhanism. Mille jaoks on terminali skriptid?

  • Automatiseeritud I/O ja minimaalne I/O valideerimine.
  • Kiirendage rutiinsete toimingute täitmist – vähendage pause seadme seadistuste vahel. (Tegelikult väheneb pausid, mis on põhjustatud samas riistvaras kopeerimis-/minevikutoimingute tegemise ajast, riistvarale rakendades kolme või enama käsufragmenti.)

See dokument hõlmab järgmisi ülesandeid:

  • Lihtsate skriptide loomine.
  • Skriptide käitamine SecureCRT-s.
  • Näited lihtsate ja täiustatud skriptide kasutamisest. (Harjutage päriselust.)

Lihtsate skriptide loomine.

Lihtsamad skriptid kasutavad ainult kahte käsku, Send ja WaitForString. Sellest funktsionaalsusest piisab 90% (või enama) sooritatud ülesannete jaoks.

Skriptid võivad töötada Pythonis, JS-is, VBS-is (Visual Basic), Perlis jne.

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

Tavaliselt fail laiendiga "*.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

Tavaliselt fail laiendiga "*.vbs"

Looge skript skriptikirje abil.

Võimaldab automatiseerida skripti kirjutamise protsessi. Hakkate stsenaariumi kirjutama. SecureCRT salvestab käsud ja sellele järgneva riistvaravastuse ning kuvab teie jaoks valmis skripti.

A. Alusta skripti kirjutamist:
SecureCRT Menu => Skript => Alusta skripti salvestamist
b. Tehke konsooliga toiminguid (sooritage konfiguratsioonitoimingud CLI-s).
V. Lõpetage skripti kirjutamine:
Menüü SecureCRT => Skript => Peata skripti salvestamine…
Salvestage skriptifail.

Täidetud käskude ja salvestatud skripti näide:

SecureCRT-i sisestamise automatiseerimine skriptide abil

Skriptide käitamine SecureCRT-s.

Pärast skripti loomist/toimetamist tekib loomulik küsimus: kuidas skripti rakendada?
On mitmeid viise:

  • Käsitsi käivitamine menüüst Skript
  • Automaatne käivitamine pärast ühendamist (sisselogimisskript)
  • Automaatne sisselogimine ilma skripti kasutamata
  • Käivitamine käsitsi SecureCRT-i nupuga (nupp tuleb veel luua ja SecureCRT-sse lisada)

Käsitsi käivitamine menüüst Skript

SecureCRT menüü => Skript => Käivita…
- Viimased 10 skripti jäetakse meelde ja need on kiireks käivitamiseks saadaval:
SecureCRT menüü => Skript => 1 "Skripti faili nimi"
SecureCRT menüü => Skript => 2 "Skripti faili nimi"
SecureCRT menüü => Skript => 3 "Skripti faili nimi"
SecureCRT menüü => Skript => 4 "Skripti faili nimi"
SecureCRT menüü => Skript => 5 "Skripti faili nimi"

Automaatne käivitamine pärast ühendamist (sisselogimisskript)

Salvestatud seansi jaoks on seadistatud automaatse logimisskripti sätted: Ühendus => Sisselogimistoimingud => Sisselogimisskript

SecureCRT-i sisestamise automatiseerimine skriptide abil

Automaatne sisselogimine ilma skripti kasutamata

Parooli kasutajanime on võimalik automaatselt sisestada ilma skripti kirjutamata, kasutades ainult SecureCRT sisseehitatud funktsionaalsust. Ühendusseadetes "Ühendus" => Sisselogimistoimingud => Automatiseeri sisselogimine - peate täitma mitu kimpu - mis tähendab paare: "Oodatav tekst" + "Sellesse teksti saadetud märgid" võib selliseid paare olla palju. (Näide: esimene paar ootab kasutajanime, teine ​​​​parooli, kolmas ootab privilegeeritud režiimi viipa, neljas paar privilegeeritud režiimi parooli.)

Näide automaatsest sisselogimisest Cisco ASA-s:

SecureCRT-i sisestamise automatiseerimine skriptide abil

Käivitamine käsitsi SecureCRT-i nupuga (nupp tuleb veel luua ja SecureCRT-sse lisada)

SecureCRT-s saate määrata nupule skripti. Nupp lisatakse spetsiaalselt selleks loodud paneelile.

A. Paneeli lisamine liidesele: SecureCRT Menu => View => Button Bar
b. Lisage paneelile nupp ja lisage skript. – Paremklõpsake nupuribal ja valige kontekstimenüüst "Uus nupp...".
V. Dialoogiboksi "Kaardinupp" väljal "Toiming" valige toiming (funktsioon) "Käivita skript".
Määrake nupu pealkiri. Nupuikooni värv. Lõpetage seaded, klõpsates nuppu OK.

SecureCRT-i sisestamise automatiseerimine skriptide abil

Märkus:

Nuppudega paneel on väga kasulik funktsionaalsus.

1. Konkreetsele seansile sisselogimisel on võimalik määrata, milline paneel sellele vahekaardile vaikimisi avada.

2. Seadmega standardtoimingute jaoks on võimalik määrata etteantud toiminguid: näita näita versiooni, näita jooksvat konfiguratsiooni, salvesta konfiguratsiooni.

SecureCRT-i sisestamise automatiseerimine skriptide abil
Nendele nuppudele pole lisatud ühtegi skripti. Ainult tegevussuund:

SecureCRT-i sisestamise automatiseerimine skriptide abil
Seadistamine - nii et seansile lülitudes avaneb seansi seadetes vajalik nuppudega paneel:

SecureCRT-i sisestamise automatiseerimine skriptide abil
Kliendil on mõistlik seadistada sisselogimiseks individuaalsed skriptid ja minna paneelile, kus on müüjale sagedased käsud.

SecureCRT-i sisestamise automatiseerimine skriptide abil
Kui vajutate nuppu Go Cisco, lülitub paneel Cisco nupuribale.

SecureCRT-i sisestamise automatiseerimine skriptide abil

Näited lihtsate ja täiustatud skriptide kasutamisest. (Harjutage päriselust.)

Peaaegu kõikidel juhtudel piisab lihtsatest skriptidest. Aga ükskord oli mul vaja skripti veidi keerulisemaks muuta – et tööd kiirendada. See tüsistus nõudis kasutajalt lihtsalt dialoogiboksis täiendavaid andmeid.

Kasutajalt andmete küsimine dialoogiboksi abil

Mul oli andmepäringu skriptis 2. See on hostinimi ja IP-aadressi 4. oktett. Selle toimingu sooritamiseks otsisin googeldades, kuidas seda teha ja leidsin selle SecureCRT (vandyke) ametlikult veebisaidilt. - funktsiooni nimetatakse viipeks.

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

See skripti osa küsis hostinime ja viimase okteti numbreid. Kuna varustust oli 15 tükki. Ja andmed esitati tabelis, siis kopeerisin väärtused tabelist ja kleepisin need dialoogiboksidesse. Edasi töötas stsenaarium iseseisvalt.

FTP kopeerimine võrguseadmetesse.

See skript käivitas minu käsuakna (shelli) ja kopeeris andmed FTP kaudu. Lõpus sulgege seanss. Notepadi ei saa selleks kasutada, kuna kopeerimine võtab väga kaua aega ja FTP puhvris olevaid andmeid nii kaua ei säilitata:

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

Kasutajanime/parooli sisestamine skripti abil

Ühel kliendil suleti juurdepääs otse võrguseadmetele. Seadmesse oli võimalik siseneda, ühendades esmalt Default Gatewayga ja sealt seejärel sellega ühendatud seadmetega. Ühenduse loomiseks kasutati IOS-i/riistvaratarkvara sisseehitatud ssh-klienti. Vastavalt sellele küsiti konsoolis kasutajanime ja parooli. Alloleva skriptiga sisestati kasutajanimi ja parool automaatselt:

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

Märkus: skripte oli 2. Üks administraatori konto jaoks, teine ​​eSIGHT konto jaoks.

Skript, mis võimaldab skripti täitmise ajal andmeid otse lisada.

Ülesandeks oli kõikidele võrguseadmetele staatilise marsruudi lisamine. Kuid iga seadme Interneti-värav oli erinev (ja see erines vaikelüüsist). Järgmine skript kuvas marsruutimistabeli, sisenes konfiguratsioonirežiimi, ei kirjutanud käsku lõpuni (interneti lüüsi IP-aadress) - lisasin selle osa. Pärast sisestusklahvi vajutamist jätkas skript käsu täitmist.

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

Selle skripti reale: crt.Screen.Send("ip route 10.10.10.8 255.255.255.252 ") lüüsi IP-aadressi ei lisata ja carriage return märki pole. Skript ootab järgmist rida märkidega "(config) #" Need märgid ilmusid pärast ip-aadressi sisestamist ja sisestamist.

Järeldus:

Skripti kirjutamisel ja täitmisel tuleb järgida reeglit: Skripti kirjutamiseks ja skripti täitmiseks kuluv aeg ei tohiks kunagi ületada aega, mis teoreetiliselt kulub sama töö käsitsi tegemiseks (märkmikust kopeerimine/kleepimine, kirjutamine ja silumine). mänguraamat ansible, pythoni skripti kirjutamiseks ja silumiseks). See tähendab, et skripti kasutamine peaks säästma aega ja mitte raiskama aega protsesside ühekordsele automatiseerimisele (st kui skript on ainulaadne ja enam ei kordu). Aga kui skript on unikaalne ja skriptiga automatiseerimine ja skripti kirjutamine/silumine võtab vähem aega kui muul viisil (ansible, käsuaken) tegemine, siis on skript parim lahendus.
Skripti silumine. Skript kasvab järk-järgult, silumine toimub esimese, teise, kolmanda seadme sissetöötamisel ja neljandaks on skript suure tõenäosusega täielikult töökorras.

Skripti käivitamine (sisestades kasutajanimi+parool) hiirega on tavaliselt kiirem kui kasutajanime ja parooli kopeerimine märkmikust. Kuid mitte turvalisuse seisukohast ohutu.
Teine (tõeline) näide skripti kasutamisel: Teil pole otsest juurdepääsu võrguseadmetele. Kuid on vaja seadistada kõik võrguseadmed (too see seiresüsteemi, seadistada täiendav Kasutajanimi/parool/snmpv3kasutajanimi/parool). Juurdepääs on siis, kui lähete Core switchi juurde, sealt avate SSH muudele seadmetele. Miks te ei saa Ansible'i kasutada. - Kuna me puutume kokku võrguseadmetes lubatud samaaegsete seansside arvu piiranguga (rida vty 0 4, kasutajaliides vty 0 4) (teine ​​küsimus on, kuidas käivitada Ansible'is erinevaid seadmeid sama SSH esimese hüppega).

Skript vähendab aega pikkade toimingute puhul – näiteks failide kopeerimine FTP kaudu. Pärast kopeerimise lõpetamist hakkab skript kohe tööle. Inimene peab nägema kopeerimise lõppu, mõistma kopeerimise lõppu ja seejärel sisestama vastavad käsud. Skript teeb seda objektiivselt kiiremini.

Skriptid on rakendatavad, kui pole võimalik kasutada massiandmete edastamise tööriistu: konsool. Või kui osa seadme andmetest on kordumatud: hostinimi, halduse IP-aadress. Või on programmi kirjutamine ja silumine keerulisem kui seadmelt saadud andmete lisamine skripti töötamise ajal. - Näide marsruudi määramise skriptiga, kui igal seadmel on oma Interneti-teenuse pakkuja IP-aadress. (Minu kolleegid kirjutasid selliseid skripte - kui DMVPN-i kõne oli üle 3. Oli vaja muuta DMVPN-i seadeid).

Juhtumiuuring: uue lüliti algsätete konfigureerimine konsooliportide abil:

A. Ühendas konsooli kaabli seadmega.
B. Käivitage skript
B. Ootas stsenaariumi täitmist
D. Ühendas konsooli kaabli järgmise seadmega.
E. Kui lüliti pole viimane, jätkake sammuga B.

Skriptitöö tulemusena:

  • esialgne parool on seadistatud seadmele.
  • Kasutajanimi sisestatud
  • sisestatakse seadme kordumatu IP-aadress.

PS operatsiooni tuli korrata. Kuna vaikimisi ssh ei olnud konfigureeritud/keelatud. (Jah, see on minu viga.)

Kasutatud allikad.

1. Skriptide loomisest
2. Skripti näited

Lisa 1: Näidisskriptid.


Näide pikast skriptist, millel on kaks päringut: hostinimi ja IP-aadress. See loodi seadmete eelhäälestamiseks konsooli kaudu (9600 boodi). Ja ka seadmete võrguga ühendamise ettevalmistamiseks.

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

Tavaliselt pole selliseid skripte vaja, kuid varustuse kogus on 15 tk. Lubatud kiirem seadistamine. Kiirem oli seadmete seadistamine SecureCRT Command akna abil.

Ssh-i konto seadistamine.

Veel üks näide. Seadistamine toimub ka konsooli kaudu.

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


Teave SecureCRT kohta:Tasuline tarkvara: alates 99 dollarist (väikseim hind on ainult SecureCRT jaoks üheks aastaks)
Ametlik kodulehekülg
Tarkvaralitsents ostetakse üks kord koos toega (värskendamiseks), seejärel kasutatakse tarkvara selle litsentsiga piiramatu aja jooksul.

Töötab operatsioonisüsteemides Mac OS X ja Windows.

Skripti tugi on olemas (see artikkel)
On Käsuaken
Serial/Telnet/SSH1/SSH2/Shelli operatsioonisüsteem

Allikas: www.habr.com