Automatizarea introducerii în SecureCRT folosind scripturi

Inginerii de rețea se confruntă adesea cu sarcina de a copia/lipi anumite fragmente dintr-un bloc de note pe consolă. De obicei trebuie să copiați mai mulți parametri: Nume de utilizator/Parolă și altceva. Utilizarea scripturilor vă permite să accelerați acest proces. DAR sarcinile de scriere a scriptului și de executare a scriptului ar trebui să dureze mai puțin timp în total decât configurarea manuală, altfel scripturile sunt inutile.

Pentru ce este acest articol? Acest articol este din seria Fast Start și are ca scop economisirea timpului inginerilor de rețea atunci când configurează echipamente (o singură sarcină) pe mai multe dispozitive. Utilizează software-ul SecureCRT și funcționalitatea de execuție a scripturilor încorporată.

Conținut

Introducere

Programul SecureCRT are încorporat un mecanism de execuție a scripturilor din cutie. Pentru ce sunt scripturile terminale?

  • I/O automată și validare minimă a I/O.
  • Accelerează execuția sarcinilor de rutină - reducând pauzele dintre setările echipamentului. (Reducerea de facto a pauzelor cauzate de timpul pentru a efectua acțiuni de copiere/trecut pe același hardware, cu 3 sau mai multe fragmente de comandă care urmează să fie aplicate hardware-ului.)

Acest document acoperă sarcinile:

  • Crearea de scripturi simple.
  • Rularea scripturilor pe SecureCRT.
  • Exemple de utilizare a scripturilor simple și avansate. (Exersează din viața reală.)

Crearea de scripturi simple.

Cele mai simple scripturi folosesc doar două comenzi, Send și WaitForString. Această funcționalitate este suficientă pentru 90% (sau mai mult) din sarcinile efectuate.

Scripturile pot funcționa în Python, JS, VBS (Visual Basic), Perl etc.

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

De obicei, un fișier cu extensia „*.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

De obicei, un fișier cu extensia „*.vbs”

Creați un script folosind o intrare de script.

Vă permite să automatizați procesul de scriere a unui script. Începi să scrii un scenariu. SecureCRT înregistrează comenzile și răspunsul hardware ulterior și vă afișează scriptul terminat.

A. Începeți să scrieți scriptul:
Meniu SecureCRT => Script => Start Recording Script
b. Efectuați acțiuni cu consola (efectuați pașii de configurare în CLI).
V. Termină de scris scenariul:
Meniu SecureCRT => Script => Opriți înregistrarea scriptului...
Salvați fișierul script.

Exemplu de comenzi executate și script salvat:

Automatizarea introducerii în SecureCRT folosind scripturi

Rularea scripturilor pe SecureCRT.

După crearea/editarea scriptului, apare o întrebare firească: Cum se aplică script-ul?
Există mai multe moduri:

  • Rulează manual din meniul Script
  • Pornire automată după conectare (script de conectare)
  • Conectare automată fără a utiliza un script
  • Declanșarea manuală cu un buton în SecureCRT (un buton nu a fost încă creat și adăugat la SecureCRT)

Rulează manual din meniul Script

Meniu SecureCRT => Script => Executare...
- Ultimele 10 scripturi sunt memorate și disponibile pentru lansare rapidă:
Meniu SecureCRT => Script => 1 „Nume fișier script”
Meniu SecureCRT => Script => 2 „Nume fișier script”
Meniu SecureCRT => Script => 3 „Nume fișier script”
Meniu SecureCRT => Script => 4 „Nume fișier script”
Meniu SecureCRT => Script => 5 „Nume fișier script”

Pornire automată după conectare (script de conectare)

Setările scriptului de înregistrare automată sunt configurate pentru sesiunea salvată: Conexiune => Acțiuni de conectare => Script de conectare

Automatizarea introducerii în SecureCRT folosind scripturi

Conectare automată fără a utiliza un script

Este posibil să introduceți automat numele de utilizator al parolei fără a scrie un script, folosind doar funcționalitatea încorporată a SecureCRT. În setările de conectare „Conexiune” => Acțiuni de conectare => Conectare automată - trebuie să completați mai multe pachete - ceea ce înseamnă perechile: „Text așteptat” + „Caractere trimise la acest text” pot exista multe astfel de perechi. (Exemplu: prima pereche așteaptă numele de utilizator, a doua așteaptă parola, a treia așteaptă prompt pentru modul privilegiat, a patra pereche pentru parola pentru modul privilegiat.)

Exemplu de conectare automată pe Cisco ASA:

Automatizarea introducerii în SecureCRT folosind scripturi

Declanșarea manuală cu un buton în SecureCRT (un buton nu a fost încă creat și adăugat la SecureCRT)

În SecureCRT, puteți atribui un script unui buton. Butonul este adăugat la un panou special creat în acest scop.

A. Adăugarea unui panou la interfață: SecureCRT Menu => View => Button Bar
b. Adăugați un buton la panou și adăugați un script. – Faceți clic dreapta pe Bara de butoane și selectați „Buton nou...” din meniul contextual.
V. În caseta de dialog „Buton Hartă”, în câmpul „Acțiune”, selectați acțiunea (funcția „Run Script”).
Specificați o legendă pentru buton. Culoarea pictogramei butonului. Finalizați setările făcând clic pe Ok.

Automatizarea introducerii în SecureCRT folosind scripturi

Nota:

Panoul cu butoane este o funcționalitate foarte utilă.

1. Este posibil, atunci când Conectați-vă la o anumită sesiune, să specificați ce panou să deschideți în această filă în mod implicit.

2. Este posibil să setați acțiuni predefinite pentru acțiuni standard cu echipament: show show version, show running-config, save configuration.

Automatizarea introducerii în SecureCRT folosind scripturi
La aceste butoane nu este atașat niciun script. Doar linia de acțiune:

Automatizarea introducerii în SecureCRT folosind scripturi
Setare - astfel încât la trecerea la o sesiune, panoul necesar cu butoane să se deschidă în setările sesiunii:

Automatizarea introducerii în SecureCRT folosind scripturi
Este logic ca clientul să configureze scripturi individuale pentru Login și să meargă la panoul cu comenzi frecvente pentru furnizor.

Automatizarea introducerii în SecureCRT folosind scripturi
Când apăsați butonul Go Cisco, panoul comută la Cisco Button Bar.

Automatizarea introducerii în SecureCRT folosind scripturi

Exemple de utilizare a scripturilor simple și avansate. (Exersează din viața reală.)

Scripturile simple sunt suficiente pentru aproape toate ocaziile. Dar odată a trebuit să complic puțin scenariul - să grăbesc munca. Această complicație a solicitat pur și simplu date suplimentare într-o casetă de dialog de la utilizator.

Solicitarea datelor de la utilizator folosind o casetă de dialog

Am avut 2 în scriptul de solicitare de date. Acesta este numele de gazdă și al 4-lea octet al adresei IP. Pentru a efectua această acțiune - am căutat pe google cum să o fac și am găsit-o pe site-ul oficial al SecureCRT (vandyke). - funcționalitatea se numește 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") 

Această parte a scriptului a cerut numele de gazdă și numerele din ultimul octet. Din moment ce erau 15 echipamente. Și datele au fost prezentate într-un tabel, apoi am copiat valorile din tabel și le-am lipit în casetele de dialog. În plus, scenariul a funcționat independent.

Copiere FTP pe echipamentul de rețea.

Acest script a lansat fereastra mea de comandă (shell) și a copiat datele prin FTP. La final, închideți sesiunea. Este imposibil să utilizați notepad pentru aceasta, deoarece copierea durează foarte mult timp și datele din bufferul FTP nu vor fi stocate atât de mult:

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

Introducerea numelui de utilizator/parolă folosind un script

La un client accesul direct la echipamentele de rețea a fost închis. A fost posibilă intrarea în echipament prin conectarea mai întâi la Gateway-ul implicit, iar de la acesta apoi la echipamentul conectat la acesta. Clientul ssh încorporat în software-ul IOS/hardware a fost folosit pentru conectare. În consecință, numele de utilizator și parola au fost solicitate în consolă. Cu scriptul de mai jos, numele de utilizator și parola au fost introduse automat:

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

Notă: au existat 2 scripturi, unul pentru contul de administrator, al doilea pentru contul eSIGHT.

Script cu capacitatea de a adăuga direct date în timpul execuției scriptului.

Sarcina a fost să adăugați o rută statică pe toate echipamentele de rețea. Dar poarta de acces la Internet pe fiecare echipament era diferită (și era diferită de gateway-ul implicit). Următorul script a afișat tabelul de rutare, a intrat în modul de configurare, nu a scris comanda până la sfârșit (adresa IP a porții către Internet) - am adăugat această parte. După ce am apăsat pe Enter, scriptul a continuat să execute comanda.

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

În acest script, în linia: crt.Screen.Send("ip route 10.10.10.8 255.255.255.252 ") adresa IP a gateway-ului nu este adăugată și nu există niciun caracter de întoarcere a carului. Scriptul așteaptă următorul rând cu caracterele „(config) #” Aceste caractere au apărut după ce am introdus adresa ip și am intrat.

concluzie:

Când scrieți un script și îl executați, trebuie respectată regula: timpul pentru scrierea unui script și executarea unui script nu trebuie să depășească niciodată timpul petrecut teoretic pentru a efectua manual aceeași lucrare (copiere/lipire dintr-un bloc de note, scriere și depanare). un manual pentru ansible, scriere și depanare script Python). Adică, utilizarea scriptului ar trebui să economisească timp și să nu piardă timpul cu automatizarea unică a proceselor (adică atunci când scriptul este unic și nu va mai exista repetare). Dar dacă scriptul este unic și automatizarea cu script-ul și scrierea/depanarea script-ului durează mai puțin timp decât efectuarea în orice alt mod (ansible, fereastră de comandă), atunci scriptul este cea mai bună soluție.
Depanarea unui script. Scriptul crește treptat, depanarea are loc la run-in pe primul, al doilea, al treilea dispozitiv, iar până la al patrulea scriptul va fi cel mai probabil complet operațional.

Rularea unui script (prin introducerea numelui de utilizator+parolă) cu mouse-ul este de obicei mai rapidă decât copierea numelui de utilizator și a parolei dintr-un bloc de note. Dar nu este sigur din punct de vedere al securității.
Un alt exemplu (real) când utilizați un script: nu aveți acces direct la echipamentele de rețea. Dar este nevoie să configurați toate echipamentele de rețea (aduceți-l în sistemul de monitorizare, configurați un nume de utilizator/parolă/snmpv3nume de utilizator/parolă suplimentar). Există acces când accesați comutatorul Core, de pe acesta deschideți SSH către alte echipamente. De ce nu poți folosi Ansible. - Pentru că ne întâlnim cu o limită a numărului de sesiuni simultane permise pe echipamentele de rețea (linia vty 0 4, interfața utilizator vty 0 4) (o altă întrebare este cum să porniți echipamente diferite în Ansible cu același prim hop SSH).

Scriptul reduce timpul în timpul operațiunilor lungi - de exemplu, copierea fișierelor prin FTP. După finalizarea copierii, scriptul începe să funcționeze imediat. O persoană va trebui să vadă sfârșitul copierii, apoi să realizeze sfârșitul copierii, apoi să introducă comenzile corespunzătoare. Scenariul o face obiectiv mai rapid.

Scripturile sunt aplicabile acolo unde este imposibil să utilizați instrumente de livrare în masă a datelor: Consolă. Sau când unele dintre datele pentru echipament sunt unice: nume de gazdă, adresa IP de gestionare. Sau atunci când scrieți un program și depanați este mai dificil decât adăugarea datelor primite de la echipament în timp ce scriptul rulează. - Un exemplu cu un script pentru prescrierea unei rute, când fiecare echipament are propria sa adresă IP a furnizorului de internet. (Colegii mei au scris astfel de scripturi - când vorbea DMVPN era peste 3. A fost necesar să se schimbe setările DMVPN).

Studiu de caz: Configurarea setărilor inițiale pe un comutator nou utilizând porturile de consolă:

A. Conectați cablul consolei la dispozitiv.
B. Rulați scriptul
B. A așteptat execuția scenariului
D. Conectați cablul consolei la următorul dispozitiv.
E. Dacă comutatorul nu este ultimul, treceți la pasul B.

Ca rezultat al lucrării scenariului:

  • parola inițială este setată pe echipament.
  • Numele de utilizator a fost introdus
  • este introdusă adresa IP unică a dispozitivului.

PS operatia a trebuit repetata. Deoarece ssh implicit nu a fost configurat/dezactivat. (Da, aceasta este greșeala mea.)

Surse folosite.

1. Despre crearea de scripturi
2. Exemple de scenarii

Anexa 1: Exemple de scripturi.


Un exemplu de script lung, cu două interogări: Nume de gazdă și adresă IP. A fost creat pentru presetarea echipamentelor prin consolă (9600 baud). Și, de asemenea, pentru a pregăti conectarea echipamentelor la rețea.

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

De obicei, astfel de scripturi nu sunt necesare, dar cantitatea de echipament este de 15 buc. Configurare mai rapidă permisă. A fost mai rapid să configurați echipamentul folosind fereastra de comandă SecureCRT.

Configurarea unui cont pentru ssh.

Alt exemplu. Configurarea se face și prin consolă.

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


Despre SecureCRT:Software plătit: de la 99 USD (cel mai mic preț este doar pentru SecureCRT timp de un an)
Site-ul oficial
O licență software este achiziționată o singură dată, cu suport (pentru actualizare), apoi software-ul este utilizat cu această licență pentru o perioadă nelimitată de timp.

Funcționează pe sistemele de operare Mac OS X și Windows.

Există suport pentru scripturi (acest articol)
Există Fereastra de comandă
Sistem de operare Serial/Telnet/SSH1/SSH2/Shell

Sursa: www.habr.com