Automatiziranje unosa u SecureCRT pomoću skripti

Mrežni inženjeri često se suočavaju sa zadatkom kopiranja/lijepljenja određenih fragmenata iz bilježnice u konzolu. Obično morate kopirati nekoliko parametara: korisničko ime/lozinka i još nešto. Korištenje skripti omogućuje vam ubrzanje ovog procesa. ALI zadaci pisanja skripte i izvršavanja skripte trebali bi ukupno trajati manje od ručne konfiguracije, inače su skripte beskorisne.

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

sadržaj

Uvod

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

  • Automatizirani I/O i minimalna I/O provjera valjanosti.
  • Ubrzajte izvršavanje rutinskih zadataka - smanjite pauze između postavki opreme. (De facto smanjenje pauza uzrokovanih vremenom za izvođenje radnji kopiranja/prošlosti na istom hardveru, s 3 ili više fragmenata naredbi koji se primjenjuju na hardver.)

Ovaj dokument pokriva zadatke:

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

Izrada jednostavnih skripti.

Najjednostavnije skripte koriste samo dvije naredbe, Send i WaitForString. Ova funkcionalnost dovoljna je za 90% (ili više) obavljenih zadataka.

Skripte mogu raditi u Python, JS, VBS (Visual Basic), Perl, 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 datoteka s 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 datoteka s ekstenzijom "*.vbs"

Stvorite skriptu koristeći unos skripte.

Omogućuje automatizaciju procesa pisanja skripte. Počinjete pisati scenarij. SecureCRT bilježi naredbe i kasniji hardverski odgovor te vam prikazuje gotovu skriptu.

A. Počnite pisati skriptu:
Izbornik SecureCRT => Skripta => Pokreni snimanje skripte
b. Izvršite radnje s konzolom (izvedite konfiguracijske korake u CLI-ju).
V. Završite pisanje skripte:
Izbornik SecureCRT => Skripta => Zaustavi snimanje skripte…
Spremite datoteku skripte.

Primjer izvršenih naredbi i spremljene skripte:

Automatiziranje unosa u SecureCRT pomoću skripti

Pokretanje skripti na SecureCRT.

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

  • Ručno pokretanje iz izbornika Skripta
  • Automatsko pokretanje nakon spajanja (skripta za prijavu)
  • Automatska prijava bez korištenja skripte
  • Ručno pokretanje pomoću gumba u SecureCRT-u (gumb tek treba biti kreiran i dodan u SecureCRT)

Ručno pokretanje iz izbornika Skripta

SecureCRT Izbornik => Skripta => Pokreni…
- Zadnjih 10 skripti se pamti i dostupno je za brzo pokretanje:
SecureCRT izbornik => Skripta => 1 "Naziv datoteke skripte"
SecureCRT izbornik => Skripta => 2 "Naziv datoteke skripte"
SecureCRT izbornik => Skripta => 3 "Naziv datoteke skripte"
SecureCRT izbornik => Skripta => 4 "Naziv datoteke skripte"
SecureCRT izbornik => Skripta => 5 "Naziv datoteke skripte"

Automatsko pokretanje nakon spajanja (skripta za prijavu)

Postavke skripte za automatsko bilježenje konfigurirane su za spremljenu sesiju: ​​Veza => Radnje prijave => Skripta za prijavu

Automatiziranje unosa u SecureCRT pomoću skripti

Automatska prijava bez korištenja skripte

Moguće je automatski unijeti korisničko ime lozinke bez pisanja skripte, koristeći samo ugrađenu funkcionalnost SecureCRT-a. U postavkama veze “Spajanje” => Radnje prijave => Automatska prijava - potrebno je ispuniti nekoliko paketa - što znači parove: “Očekivani tekst” + “Poslani znakovi u ovaj tekst” može biti mnogo takvih parova. (Primjer: 1. par čeka korisničko ime, drugi čeka lozinku, treći čeka upit za povlašteni način rada, četvrti par za lozinku povlaštenog načina rada.)

Primjer automatske prijave na Cisco ASA:

Automatiziranje unosa u SecureCRT pomoću skripti

Ručno pokretanje pomoću gumba u SecureCRT-u (gumb tek treba biti kreiran i dodan u SecureCRT)

U SecureCRT-u možete dodijeliti skriptu gumbu. Gumb se dodaje na ploču posebno stvorenu za tu svrhu.

A. Dodavanje panela u sučelje: SecureCRT Menu => View => Button Bar
b. Dodajte gumb na ploču i dodajte skriptu. – Kliknite desnom tipkom miša na traku s gumbima i odaberite "Novi gumb..." iz kontekstnog izbornika.
V. U dijaloškom okviru "Map Button", u polju "Action", odaberite radnju (funkciju) "Run Script".
Odredite naslov za gumb. Boja ikone gumba. Završite postavke klikom na OK.

Automatiziranje unosa u SecureCRT pomoću skripti

Napomena:

Ploča s gumbima je vrlo korisna funkcija.

1. Moguće je, kada se prijavite u određenu sesiju, odrediti koju ploču otvoriti za ovu karticu prema zadanim postavkama.

2. Moguće je postaviti unaprijed definirane akcije za standardne akcije s opremom: prikaži prikaži verziju, prikaži run-config, spremi konfiguraciju.

Automatiziranje unosa u SecureCRT pomoću skripti
Ovim gumbima nije priložena skripta. Samo akcijska linija:

Automatiziranje unosa u SecureCRT pomoću skripti
Postavka - tako da se pri prelasku na sesiju u postavkama sesije otvara potrebna ploča s gumbima:

Automatiziranje unosa u SecureCRT pomoću skripti
Ima smisla da kupac postavi pojedinačne skripte za prijavu i ode na ploču s čestim naredbama za dobavljača.

Automatiziranje unosa u SecureCRT pomoću skripti
Kada pritisnete gumb Go Cisco, ploča se prebacuje na traku s gumbima Cisco.

Automatiziranje unosa u SecureCRT pomoću skripti

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

Jednostavne skripte dovoljne su za gotovo sve prilike. Ali jednom sam trebao malo zakomplicirati scenarij - ubrzati rad. Ova komplikacija jednostavno je tražila dodatne podatke u dijaloškom okviru od korisnika.

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

U skripti zahtjeva za podacima imao sam 2. Ovo je ime glavnog računala i 4. oktet IP adrese. Za izvođenje ove radnje - guglao sam kako se to radi i našao sam na službenoj web stranici SecureCRT (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 je tražio ime glavnog računala i brojeve iz posljednjeg okteta. Pošto je bilo 15 komada opreme. I podaci su predstavljeni u tablici, a zatim sam kopirao vrijednosti iz tablice i zalijepio ih u dijaloške okvire. Dalje je scenarij radio samostalno.

FTP kopiranje na mrežnu opremu.

Ova skripta pokrenula je moj naredbeni prozor (ljusku) i kopirala podatke putem FTP-a. Na kraju zatvorite sesiju. Nemoguće je koristiti notepad za ovo, jer kopiranje traje jako dugo, a podaci u FTP međuspremniku neće biti tako dugo pohranjeni:

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

Unos korisničkog imena/lozinke pomoću skripte

Jednom korisniku zatvoren je izravan pristup mrežnoj opremi. U opremu je bilo moguće ući tako da se prvo spojite na Default Gateway, a s njega zatim na opremu spojenu na njega. Za povezivanje je korišten ssh klijent ugrađen u IOS/hardverski softver. Sukladno tome, korisničko ime i lozinka su zatraženi u konzoli. Sa skriptom u nastavku, 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 račun, druga za eSIGHT račun.

Skripta s mogućnošću izravnog dodavanja podataka tijekom izvođenja skripte.

Zadatak je bio dodati statičnu rutu na svu mrežnu opremu. Ali pristupnik Internetu na svakoj opremi bio je drugačiji (i razlikovao se od zadanog pristupnika). Sljedeća skripta je prikazala tablicu usmjeravanja, ušla u način konfiguracije, nije napisala naredbu do kraja (IP adresa pristupnika Internetu) - dodao sam ovaj dio. Nakon što sam pritisnuo Enter, skripta je nastavila izvršavati 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 retku: crt.Screen.Send("ip route 10.10.10.8 255.255.255.252 ") IP adresa pristupnika nije dodana i nema znaka za povratak na početak. Skripta čeka sljedeći redak sa znakovima "(config) #" Ovi znakovi su se pojavili nakon što sam upisao ip adresu i enter.

Zaključak:

Prilikom pisanja skripte i njenog izvršavanja mora se poštovati pravilo: Vrijeme za pisanje skripte i izvršavanje skripte nikada ne bi smjelo biti duže od vremena teoretski utrošenog na ručno obavljanje istog posla (kopiraj/zalijepi iz notepada, pisanje i otklanjanje pogrešaka). priručnik za ansible, pisanje i otklanjanje pogrešaka u python skripti). Odnosno, korištenje skripte treba uštedjeti vrijeme, a ne gubiti 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/otklanjanje pogrešaka u skripti traje manje vremena nego izvođenje na bilo koji drugi način (ansibl, naredbeni prozor), tada je skripta najbolje rješenje.
Otklanjanje pogrešaka skripte. Skripta postupno raste, otklanjanje pogrešaka se odvija na uhodavanju na prvom, drugom, trećem uređaju, a do četvrtog će skripta najvjerojatnije biti potpuno operativna.

Pokretanje skripte (unošenjem korisničkog imena+lozinke) pomoću miša obično je brže od kopiranja korisničkog imena i lozinke iz bilježnice. Ali nije siguran sa sigurnosne točke gledišta.
Drugi (pravi) primjer kada koristite skriptu: Nemate izravan pristup mrežnoj opremi. No potrebno je konfigurirati svu mrežnu opremu (uvesti je u sustav nadzora, konfigurirati dodatno korisničko ime/lozinku/snmpv3korisničko ime/lozinku). Postoji pristup kada odete na Core switch, s njega otvarate SSH prema drugoj opremi. Zašto ne možete koristiti Ansible. - Zato što nailazimo na ograničenje broja dopuštenih simultanih sesija na mrežnoj opremi (linija vty 0 4, korisničko sučelje vty 0 4) (drugo je pitanje kako pokrenuti drugu opremu u Ansibleu s istim SSH prvim skokom).

Skripta smanjuje vrijeme tijekom dugih operacija - na primjer, kopiranje datoteka putem FTP-a. Nakon završetka kopiranja, skripta odmah počinje raditi. Osoba će morati vidjeti kraj kopiranja, zatim shvatiti kraj kopiranja, zatim unijeti odgovarajuće naredbe. Scenarij to čini objektivno brže.

Skripte su primjenjive tamo gdje je nemoguće koristiti alate za dostavu masovnih podataka: Konzola. Ili kada su neki od podataka za opremu jedinstveni: ime hosta, IP adresa upravljanja. Ili kada pišete program i ispravljate pogreške, to je teže od dodavanja podataka primljenih od opreme dok skripta radi. - Primjer sa skriptom za propisivanje rute, kada svaka oprema ima svoju IP adresu Internet providera. (Moji kolege su napisali takve skripte - kada je DMVPN govorio bilo je preko 3. Bilo je potrebno promijeniti postavke DMVPN-a).

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

A. Uključili ste kabel konzole u uređaj.
B. Pokrenite skriptu
B. Čekao je izvršenje skripte
D. Priključite kabel konzole u sljedeći uređaj.
E. Ako prekidač nije zadnji, idite na korak B.

Kao rezultat rada skripte:

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

PS operacija se morala ponoviti. Budući da zadani ssh nije konfiguriran/onemogućen. (Da, ovo je moja greška.)

Korišteni izvori.

1. O izradi skripti
2. Primjeri scenarija

Dodatak 1: Primjeri skripti.


Primjer duge skripte, s dva upita: ime hosta i IP adresa. Napravljen je za predpodešavanje opreme preko konzole (9600 baud). I također 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. Omogućeno brže postavljanje. Bilo je brže postaviti opremu pomoću SecureCRT naredbenog prozora.

Postavljanje računa za ssh.

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

Radi na operativnim sustavima Mac OS X i Windows.

Postoji podrška za skriptu (ovaj članak)
Tu je naredbeni prozor
Operativni sustav Serial/Telnet/SSH1/SSH2/Shell

Izvor: www.habr.com