Automatizacija unosa u SecureCRT pomoću skripti

Mrežni inženjeri se često susreću sa zadatkom kopiranja/lijepljenja određenih fragmenata iz notepada na konzolu. Obično morate kopirati nekoliko parametara: Korisničko ime/Lozinku i nešto drugo. Upotreba skripti vam omogućava da ubrzate ovaj proces. ALI zadaci pisanja skripte i izvršavanja skripte trebali bi ukupno trajati manje vremena od ručnog konfigurisanja, inače su skripte beskorisne.

Čemu služi ovaj članak? Ovaj članak je iz serije Fast Start i ima za cilj uštedu vremena mrežnim inženjerima prilikom postavljanja opreme (jedan zadatak) na više uređaja. Koristi SecureCRT softver i ugrađenu funkcionalnost izvršavanja skripte.

Sadržaj

Uvod

Program SecureCRT ima ugrađeni mehanizam za izvršavanje skripte iz kutije. Čemu služe terminalske skripte?

  • Automatski I/O i minimalna I/O validacija.
  • Ubrzajte izvršavanje rutinskih zadataka - smanjujući pauze između podešavanja opreme. (De facto smanjenje pauza uzrokovanih vremenom za izvođenje radnji kopiranja/prošlosti na istom hardveru, sa 3 ili više fragmenata naredbi koje treba primijeniti na hardver.)

Ovaj dokument pokriva zadatke:

  • Kreiranje jednostavnih skripti.
  • Pokretanje skripti na SecureCRT.
  • Primjeri korištenja jednostavnih i naprednih skripti. (Vježbanje iz stvarnog života.)

Kreiranje jednostavnih skripti.

Najjednostavniji skripti koriste samo dvije naredbe, Send i WaitForString. Ova funkcionalnost je dovoljna za 90% (ili više) izvršenih zadataka.

Skripte mogu raditi u Python-u, JS-u, VBS-u (Visual Basic), Perlu, itd.

piton

# $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čno fajl sa ekstenzijom "*.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čno fajl sa ekstenzijom "*.vbs"

Kreirajte skriptu koristeći unos skripte.

Omogućava vam automatizaciju procesa pisanja skripte. Počinjete pisati scenarij. SecureCRT snima komande i kasniji hardverski odgovor i prikazuje gotovu skriptu za vas.

A. Počnite pisati skriptu:
SecureCRT meni => Skripta => Pokreni snimanje skripte
b. Izvršite radnje s konzolom (izvedite korake konfiguracije u CLI).
V. Završite pisanje skripte:
SecureCRT meni => Skripta => Zaustavi snimanje skripte…
Sačuvajte datoteku skripte.

Primjer izvršenih naredbi i sačuvane skripte:

Automatizacija unosa u SecureCRT pomoću skripti

Pokretanje skripti na SecureCRT.

Nakon kreiranja/uređivanja skripte, postavlja se logično pitanje: Kako primijeniti skriptu?
Postoji nekoliko načina:

  • Pokretanje ručno iz menija Script
  • Automatsko pokretanje nakon povezivanja (skripta za prijavu)
  • Automatsko prijavljivanje bez upotrebe skripte
  • Ručno pokretanje pomoću dugmeta u SecureCRT (dugme tek treba da bude kreirano i dodato u SecureCRT)

Pokretanje ručno iz menija Script

SecureCRT meni => Skripta => Pokreni…
- Zadnjih 10 skripti je zapamćeno i dostupno za brzo pokretanje:
SecureCRT meni => Skripta => 1 "Naziv datoteke skripte"
SecureCRT meni => Skripta => 2 "Naziv datoteke skripte"
SecureCRT meni => Skripta => 3 "Naziv datoteke skripte"
SecureCRT meni => Skripta => 4 "Naziv datoteke skripte"
SecureCRT meni => Skripta => 5 "Naziv datoteke skripte"

Automatsko pokretanje nakon povezivanja (skripta za prijavu)

Postavke skripte za automatsko evidentiranje su konfigurisane za sačuvanu sesiju: ​​Veza => Akcije prijave => Skripta za prijavu

Automatizacija unosa u SecureCRT pomoću skripti

Automatsko prijavljivanje bez upotrebe skripte

Moguće je automatski unijeti korisničko ime lozinke bez pisanja skripte, koristeći samo ugrađenu funkcionalnost SecureCRT-a. U postavkama veze “Veza” => Akcije prijave => Automatsko prijavljivanje – potrebno je da popunite nekoliko paketa – što znači parove: “Očekivani tekst” + “Poslani znakovi na ovaj tekst” može biti mnogo takvih parova. (Primjer: 1. par čeka korisničko ime, drugi čeka lozinku, treći čeka prompt za privilegirani način rada, četvrti par za lozinku za privilegirani način rada.)

Primjer automatske prijave na Cisco ASA:

Automatizacija unosa u SecureCRT pomoću skripti

Ručno pokretanje pomoću dugmeta u SecureCRT (dugme tek treba da bude kreirano i dodato u SecureCRT)

U SecureCRT-u možete dodijeliti skriptu gumbu. Dugme se dodaje na panel posebno kreiran za ovu svrhu.

A. Dodavanje panela interfejsu: SecureCRT Menu => View => Button Bar
b. Dodajte dugme na panel i dodajte skriptu. – Kliknite desnim tasterom miša na traku sa dugmadima i izaberite „Novo dugme…“ iz kontekstnog menija.
V. U dijaloškom okviru "Map Button", u polju "Action" izaberite akciju (funkciju) "Run Script".
Odredite natpis za dugme. Boja za ikonu dugmeta. Završite podešavanja klikom na Ok.

Automatizacija unosa u SecureCRT pomoću skripti

Napomena:

Panel sa dugmadima je veoma korisna funkcionalnost.

1. Moguće je, kada se prijavite na određenu sesiju, odrediti koji panel će se po defaultu otvoriti na ovoj kartici.

2. Moguće je podesiti unapred definisane akcije za standardne akcije sa opremom: prikaži verziju, prikaži run-config, sačuvaj konfiguraciju.

Automatizacija unosa u SecureCRT pomoću skripti
Ovim dugmadima nije priložena skripta. Samo linija akcije:

Automatizacija unosa u SecureCRT pomoću skripti
Postavka - tako da se prilikom prelaska na sesiju u postavkama sesije otvara potreban panel sa dugmadima:

Automatizacija unosa u SecureCRT pomoću skripti
Ima smisla da korisnik podesi pojedinačne skripte za prijavu i ode na panel sa čestim komandama za dobavljača.

Automatizacija unosa u SecureCRT pomoću skripti
Kada pritisnete dugme Go Cisco, panel se prebacuje na traku sa dugmadima Cisco.

Automatizacija unosa u SecureCRT pomoću skripti

Primjeri korištenja jednostavnih i naprednih skripti. (Vježbanje iz stvarnog života.)

Jednostavne skripte su dovoljne za gotovo sve prilike. Ali jednom sam morao malo zakomplikovati scenario - da ubrzam rad. Ova komplikacija je samo zahtijevala dodatne podatke u dijaloškom okviru od korisnika.

Traženje podataka od korisnika pomoću dijaloškog okvira

Imao sam 2 u skripti zahtjeva za podacima. Ovo je ime hosta i 4. oktet IP adrese. Da izvršim ovu radnju - proguglao sam kako se to radi i našao na službenoj web stranici SecureCRT-a (vandyke). - funkcionalnost se zove prompt.

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

Ovaj dio skripte traži ime hosta i brojeve iz posljednjeg okteta. Pošto je bilo 15 komada opreme. I podaci su predstavljeni u tabeli, zatim sam kopirao vrijednosti iz tabele i zalijepio ih u dijaloške okvire. Dalje, scenario je radio samostalno.

FTP kopiranje na mrežnu opremu.

Ova skripta je pokrenula moj komandni prozor (ljuska) i kopirala podatke preko FTP-a. Na kraju, zatvorite sesiju. Nemoguće je koristiti notepad za ovo, jer kopiranje traje jako dugo i podaci u FTP baferu neće biti pohranjeni toliko dugo:

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

Unošenje korisničkog imena/lozinke pomoću skripte

Kod jednog korisnika je direktno zatvoren pristup mrežnoj opremi. U opremu je bilo moguće ući tako da se prvo poveže na Default Gateway, a sa njega na opremu koja je na njega povezana. Za povezivanje je korišten ssh klijent ugrađen u IOS/hardverski softver. Shodno tome, korisničko ime i lozinka su zatraženi u konzoli. Sa skriptom ispod, korisničko ime i lozinka su automatski uneseni:

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

Napomena: Postojale su 2 skripte, jedna za administratorski nalog, druga za eSIGHT nalog.

Skripta sa mogućnošću direktnog dodavanja podataka tokom izvršavanja skripte.

Zadatak je bio dodati statičku rutu na svu mrežnu opremu. Ali pristupnik za Internet na svakoj opremi bio je drugačiji (i razlikovao se od zadanog gateway-a). Sljedeća skripta je prikazala tabelu rutiranja, ušla u konfiguracijski mod, nije napisala naredbu do kraja (IP adresa gateway-a na Internet) - dodao sam ovaj dio. Nakon što sam pritisnuo Enter, skripta je nastavila da izvršava naredbu.

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

U ovoj skripti, u liniji: crt.Screen.Send("ip ruta 10.10.10.8 255.255.255.252") IP adresa gateway-a nije dodana i nema karaktera za povratak. Skripta čeka sljedeći red sa znakovima "(config) #" Ovi znakovi su se pojavili nakon što sam unio ip adresu i ušao.

Zaključak:

Prilikom pisanja skripte i njenog izvršavanja, mora se poštovati pravilo: vrijeme za pisanje skripte i izvršavanje skripte nikada ne smije biti više od vremena koje se teoretski troši na ručno obavljanje istog posla (kopiranje / lijepljenje iz notepad-a, pisanje i otklanjanje grešaka priručnik za ansible, pisanje i otklanjanje grešaka python skripte). Odnosno, korištenje skripte treba da uštedi vrijeme, a ne da gubi vrijeme na jednokratnu automatizaciju procesa (tj. kada je skripta jedinstvena i više neće biti ponavljanja). Ali ako je skripta jedinstvena i automatizacija sa skriptom i pisanje/debagovanje skripte traje manje vremena nego na bilo koji drugi način (ansible, komandni prozor), onda je skripta najbolje rješenje.
Otklanjanje grešaka u skripti. Skripta postepeno raste, otklanjanje grešaka se odvija na prvom, drugom, trećem uređaju, a do četvrtog će skripta najvjerovatnije biti u potpunosti operativna.

Pokretanje skripte (unošenjem korisničkog imena+lozinke) mišem je obično brže od kopiranja korisničkog imena i lozinke iz notepada. Ali nije sigurno sa sigurnosne tačke gledišta.
Još jedan (pravi) primjer kada koristite skriptu: Nemate direktan pristup mrežnoj opremi. Ali postoji potreba da se konfiguriše sva mrežna oprema (dovedete je u sistem za nadzor, konfigurišete dodatno korisničko ime/lozinku/snmpv3korisničko ime/lozinku). Postoji pristup kada odete na Core switch, sa njega otvarate SSH na drugu opremu. Zašto ne možete koristiti Ansible. - Zato što nailazimo na ograničenje broja dozvoljenih istovremenih sesija na mrežnoj opremi (linija vty 0 4, korisničko sučelje vty 0 4) (drugo pitanje je kako pokrenuti različitu opremu u Ansibleu sa istim SSH prvim skokom).

Skripta smanjuje vrijeme tokom dugih operacija - na primjer, kopiranje datoteka putem FTP-a. Nakon što je kopiranje završeno, skripta odmah počinje s radom. Osoba će morati vidjeti kraj kopiranja, zatim shvatiti kraj kopiranja, zatim unijeti odgovarajuće komande. Skripta to objektivno radi brže.

Skripte su primjenjive tamo gdje je nemoguće koristiti alate za masovnu dostavu podataka: Konzola. Ili kada su neki podaci za opremu jedinstveni: ime hosta, IP adresa upravljanja. Ili kada se piše program i otklanja greške, to je teže od dodavanja podataka primljenih od opreme dok je skripta pokrenuta. - Primjer sa skriptom za propisivanje rute, kada svaka oprema ima svoju IP adresu Internet provajdera. (Moje kolege su napisale takve skripte - kada je DMVPN govorio preko 3. Bilo je potrebno promijeniti DMVPN postavke).

Studija slučaja: Konfiguriranje početnih postavki na novom prekidaču pomoću portova konzole:

A. Utaknuo kabl konzole u uređaj.
B. Pokrenite skriptu
B. Čekao se izvršavanje skripte
D. Priključio kabl konzole u sljedeći uređaj.
E. Ako prekidač nije posljednji, idite na korak B.

Kao rezultat rada skripte:

  • početna lozinka je postavljena na opremi.
  • Korisničko ime uneseno
  • unosi se jedinstvena IP adresa uređaja.

PS operacija je morala da se ponovi. Zato što Default ssh nije konfigurisan/onemogućen. (Da, ovo je moja greška.)

Korišteni izvori.

1. O kreiranju skripti
2. Primjeri skripti

Dodatak 1: Primjeri skripti.


Primjer dugačke skripte, sa dva upita: Hostname i IP adresa. Kreiran je za predpodešavanje opreme preko konzole (9600 baud). I pripremiti priključak opreme na mrežu.

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

Takve skripte obično nisu potrebne, ali količina opreme je 15 kom. Dozvoljeno brže postavljanje. Bilo je brže podesiti opremu koristeći SecureCRT komandni prozor.

Postavljanje naloga za ssh.

Još jedan primjer. Konfiguracija se također vrši preko 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-u:Plaćeni softver: od 99 USD (najmanja cijena je samo za SecureCRT na godinu dana)
Službena web stranica
Softverska licenca se kupuje jednom, uz podršku (za ažuriranje), zatim se softver koristi sa ovom licencom neograničeno vrijeme.

Radi na Mac OS X i Windows operativnim sistemima.

Postoji podrška za skripte (ovaj članak)
Postoje Komandni prozor
Serijski/Telnet/SSH1/SSH2/Shell operativni sistem

izvor: www.habr.com