Automatizarea introducerii în SecureCRT prin intermediul scripturilor

Inginerii de rețea se confruntă adesea cu sarcina de a copia / lipi anumite fragmente dintr-un editor de text în consolă. De obicei, este necesar să se copieze mai mulți parametri: Nume utilizator / Parolă și alte informații. Acest proces poate fi accelerat prin utilizarea scripturilor. DAR, sarcinile scrierii și executării scriptului, în total, ar trebui să dureze mai puțin decât configurarea manuală; altfel, scripturile sunt inutile.

Scopul acestui articol. Acest articol face parte din seria Fast Start și este destinat economisirii timpului inginerilor de rețea atunci când configurează echipamente (o sarcină) pe mai multe dispozitive. Se folosește software-ul SecureCRT și funcționalitatea încorporată de executare a scripturilor.

Cuprins

Introducere

În programul SecureCRT este integrat din fabrică un mecanism de executare a scripturilor. Care este utilitatea scripturilor în terminal:

  • Introducere și ieșire automatizată, cu o minimă verificare a corectitudinii introducerii / ieșirii.
  • Accelerarea executării sarcinilor repetitive - reducerea pauzelor între configurarea echipamentului. (Practic, reducerea pauzelor cauzate de timpul necesar pentru acțiunile de copiere / lipire pe același echipament, în cazul a 3 sau mai multe fragmente de comenzi pentru aplicarea pe echipament.)

În acest document sunt discutate următoarele sarcini:

  • Crearea celor mai simple scripturi.
  • Executarea scripturilor în SecureCRT.
  • Exemple de utilizare a scripturilor simple și avansate. (Practică din viața reală.)

Crearea celor mai simple scripturi.

Celor 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 limbajele Python, JS, VBS (Visual Basic), Perl etc.

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

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”

Crearea unui script folosind înregistrarea scriptului.

Permite automatizarea procesului de scriere a scriptului. Lansați înregistrarea scriptului. SecureCRT înregistrează comenzile și răspunsul subsequent al echipamentului și vă oferă un script gata.

a. Lansați înregistrarea scriptului:
Meniu SecureCRT => Script => Start Recording Script
b. Efectuați acțiuni în consolă (efectați acțiuni de configurare în CLI).
c. Încheiați înregistrarea scriptului:
Meniu SecureCRT => Script => Stop Recording Script...
Salvați fișierul cu scriptul.

Exemplu de comenzi efectuate și script salvat:

Automatizarea introducerii în SecureCRT prin intermediul scripturilor

Executarea scripturilor în SecureCRT.

După crearea/editarea scriptului, se ridică întrebarea inevitabilă: Cum se aplică scriptul?
Există mai multe modalități:

  • Rulare manuală din meniul Script
  • Executare automată după conectare (logon script)
  • Logon automat fără utilizarea unui script
  • Executare manuală printr-un buton în SecureCRT (butonul urmează să fie creat și adăugat în SecureCRT)

Rulare manuală din meniul Script

Meniu SecureCRT => Script => Run...
— 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”

Executare automată după conectare (logon script)

Setările automate pentru scriptul de conectare sunt configurate pentru sesiunea salvată: Connection => Logon Actions => Logon script

Automatizarea introducerii în SecureCRT prin intermediul scripturilor

Logon automat fără utilizarea unui script

Există posibilitatea de a introduce automat numele de utilizator și parola fără a scrie un script, folosind doar funcționalitatea încorporată a SecureCRT. În setările de conexiune, „Connection” => Logon Actions => Automate logon – trebuie completate mai multe perechi – care presupun perechi: „Text așteptat” + „Simboluri trimise pentru acest text”, astfel de perechi pot fi multe. (Exemplu: 1-a pereche așteptând introducerea numelui de utilizator, a doua așteptând introducerea parolei, a treia așteptând invitația în modul privilegiat, a patra parola din modul privilegiat.)

Exemplu de logon automat pe Cisco ASA:

Automatizarea introducerii în SecureCRT prin intermediul scripturilor

Executare manuală printr-un buton în SecureCRT (butonul urmează să fie creat și adăugat în SecureCRT)

În SecureCRT, se poate atribui un script unei butoane. Butonul este adăugat pe o bară special creată în acest scop.

a. Adăugăm bara în interfață: Meniu SecureCRT => View => Button Bar
b. Adăugăm un buton pe bară și adăugăm scriptul. – Facem clic dreapta pe bara Button Bar și în meniul contextual alegem opțiunea „New button…”.
c. În fereastra de dialog „Map Button”, în câmpul „Action” alegem acțiunea (funcția) „Run Script”.
Specificați textul de pe buton. Culoarea pentru iconița butonului. Finalizăm setările apăsând Ok.

Automatizarea introducerii în SecureCRT prin intermediul scripturilor

Notă:

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

1. Există posibilitatea de a specifica, la autentificarea într-o sesiune, ce panou să se deschidă implicit pentru această filă.

2. Există posibilitatea de a seta acțiuni predefinite pentru acțiunile standard cu echipamentele: afișați show version, show running-config, salvați configurația.

Automatizarea introducerii în SecureCRT prin intermediul scripturilor
Aceste butoane nu sunt legate de niciun script. Doar o linie cu acțiuni:

Automatizarea introducerii în SecureCRT prin intermediul scripturilor
Configurația – pentru ca, la comutarea pe sesiune, să se deschidă panoul necesar cu butoane se face în setările sesiunii:

Automatizarea introducerii în SecureCRT prin intermediul scripturilor
Pentru client are sens să configureze scripturi personalizate pentru Login și trecerea pe panoul cu comenzi frecvente pentru furnizor.

Automatizarea introducerii în SecureCRT prin intermediul scripturilor
Când se apasă butonul Go Cisco – panoul se comută pe Cisco Button Bar.

Automatizarea introducerii în SecureCRT prin intermediul scripturilor

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

Scripturile simple sunt suficiente pentru aproape toate situațiile posibile. Dar o dată a fost nevoie să complic puțin scriptul – pentru a accelera lucrul. Această complicare a solicitat doar date suplimentare într-o fereastră de dialog de la utilizator.

Solicitarea de date de la utilizator printr-o fereastră de dialog

În scriptul meu, am avut 2 cereri de date. Aceasta a fost Hostname și al patrulea octet al adresei IP. Pentru a efectua această acțiune – am căutat pe Google cum să fac asta și am găsit pe site-ul oficial SecureCRT (vandyke) – funcționalitatea se numește prompt.

	crt.Screen.WaitForString("-Vlanif200]")
	hostnamestr = crt.Dialog.Prompt("Introduceți hostname:", "hostname", "", False)
	ipaddressstr = crt.Dialog.Prompt("Introduceți adresa ip:", "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 solicita Hostname și cifrele din ultimul octet. Deoarece erau 15 echipamente și datele erau prezentate într-un tabel, am copiat valorile din tabel și le-am lipit în feron zinazele de dialog. Apoi, scriptul a funcționat automat.

Copiere FTP pe echipamente de rețea.

Acest script mi-a deschis o fereastră de comandă (shell) și a copiat datele prin FTP. La final, a închis sesiunea. Utilizarea Notepad-ului pentru aceasta este imposibilă, deoarece copierea durează foarte mult și datele din buffer-ul FTP nu vor fi păstrate 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 / parolei cu ajutorul unui script

Unul dintre clienți a avut restricționat accesul direct la echipamentele de rețea. A fost necesară conectarea la echipament prin intermediul gateway-ului implicit și de acolo la echipamentele conectate. Pentru conectare s-a folosit clientul ssh integrat în IOS/softul echipamentului. În consecință, numele de utilizator și parola au fost solicitate în consolă. Cu ajutorul scriptului 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 fost 2 scripturi. Unul pentru contul de administrator, iar celălalt pentru contul eSIGHT.

Script cu posibilitatea de a completa datele în timpul executării scriptului.

Obiectivul a fost de a adăuga o rută statică pe toate echipamentele de rețea. Totuși, gateway-ul pentru internet pe fiecare echipament era diferit (și se deosebea de gateway-ul implicit). Următorul script afișa tabela de rutare, intra în modul de configurare și nu completa până la capăt comanda (adresa IP a gateway-ului pentru internet) - această parte o completam eu. După ce apăsam Enter, scriptul continua executarea comenzii.

# $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 „) lipsește adresa IP a gateway-ului și nu există simbolul de sfârșit de linie. Scriptul așteaptă apariția următoarei linii cu simbolurile «(config)#». Aceste simboluri apăreau după ce eu introduceam adresa IP și apăsam enter.

Concluzie:

Atunci când scrieți și executați scriptul, trebuie să respectați cu strictețe regula: Timpul de scriere a scriptului și timpul de execuție a acestuia nu trebuie să depășească timpul teoretic necesar pentru a efectua aceeași muncă manual (copy/paste din Notepad, scrierea și depanarea playbook-ului pentru Ansible, scrierea și depanarea scriptului Python). Adică, utilizarea scriptului trebuie să economisească timp, nu să irosească timp pentru o automatizare unică a proceselor (adică atunci când scriptul este unic și nu va mai fi o repetare ulterioară). Dar dacă scriptul este unic și automatizarea cu scriptul și scrierea/depanarea scriptului necesită mai puțin timp decât executarea prin orice alt mod (Ansible, fereastra de comandă), atunci scriptul este cea mai bună soluție.
Depanarea scriptului. Scriptul crește treptat, depanarea se desfășoară pe primele, a doua, a treia dispozitiv și până la al patrulea, scriptul va fi probabil complet funcțional.

Executarea scriptului (cu introducerea username+password) folosind mouse-ul este de obicei mai rapidă decât copierea din Notepad a Username și Password. Totuși, nu este sigur din punct de vedere al securității.
Un alt exemplu (real) de utilizare a scriptului: Nu aveți acces direct la echipamentele de rețea. Dar este necesară reconfigurarea tuturor echipamentelor de rețea (introducerea în sistemul de monitorizare, configurarea suplimentară a Username/password/snmpv3username/password). Există acces când intrați pe switch-ul Core, de pe care deschideți SSH pe alte echipamente. De ce nu se pot folosi uneltele Ansible? — Pentru că ne confruntăm cu o limitare a numărului de sesiuni simultane permise pe echipamentele de rețea (line vty 0 4, user-interface vty 0 4) (altă întrebare este cum se poate configura diferite echipamente cu același SSH de primul hop).

Scriptul reduce timpul în operațiuni îndelungate – de exemplu, copierea fișierelor prin FTP. După terminarea copiei, scriptul începe imediat să funcționeze. O persoană va trebui să vadă finalizarea copiei, apoi să conștientizeze finalizarea copiei, apoi să introducă comenzile corespunzătoare. Scriptul face acest lucru obiectiv mai repede.

Scripturile sunt aplicabile acolo unde nu este posibil să se utilizeze mijloace de livrare în masă a datelor: Consolă. Sau când o parte din date pentru echipament este unică: hostname, adresa IP de management. Sau când a scrie un program și a o debuga este mai complicat decât a completa datele obținute de la echipament în timpul funcționării scriptului. — Exemplu cu scriptul pentru setarea unei rute, când pe fiecare echipament IP-ul provider-ului de internet este diferit. (Colegul meu a scris astfel de scripturi — când DMVPN spoke era peste 300. A fost necesar să se schimbe setările DMVPN).

Exemplu din practică: Setarea configurațiilor inițiale pe un nou switch prin porturile consolei:

A. Am conectat cablul consolei la dispozitiv.
B. Am lansat scriptul.
C. Am așteptat finalizarea scriptului.
D. Am schimbat cablul consolei la următorul dispozitiv.
E. Dacă switch-ul nu este ultimul, reveniți la pasul B.

În concluzie, la finalul lucrării scriptului:

  • pe echipament a fost setat parola inițială.
  • a fost introdus Username.
  • a fost introdusă o adresă IP unică a dispozitivului.

P.S. operația a trebuit repetată. Deoarece, din Default, SSH s-a dovedit a fi nesetat/oprit. (Da, aceasta a fost greșeala mea.)

Sursele utilizate.

1. Despre crearea scripturilor.
2. Exemple de scripturi.

Anexa 1: Exemple de scripturi.


Exemplu de script lung, cu două cereri: Nume gazdă și adresă IP. A fost creat pentru a pregăti echipamentul prin consolă (9600 baude). De asemenea, pentru a pregăti conectarea echipamentului 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()

Astfel de scripturi sunt de obicei inutile, dar numărul de echipamente – 15 buc. A permis accelerarea configurării. Ulterior, configurarea echipamentului a fost mai rapidă cu ajutorul feronerie SecureCRT Command window.

Configurarea contului pentru ssh.

Alt exemplu. Configurare ș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$ (cea mai mică preț pentru SecureCRT pe un an)
Site oficial
Se achiziționează o licență pentru software o singură dată, cu suport (pentru actualizări), apoi software-ul este folosit cu această licență nelimitat.

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

Există suport pentru scripturi (acest articol)
Există Fereastra de comenzi
Serial/Telnet/SSH1/SSH2/Shell al sistemului de operare

Sursa: habr.com

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster