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
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.
# $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:
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)
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
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:
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.
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.
La aceste butoane nu este atașat niciun script. Doar linia de acțiune:
Setare - astfel încât la trecerea la o sesiune, panoul necesar cu butoane să se deschidă în setările sesiunii:
Este logic ca clientul să configureze scripturi individuale pentru Login și să meargă la panoul cu comenzi frecvente pentru furnizor.
Când apăsați butonul Go Cisco, panoul comută la Cisco Button Bar.
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.
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.)
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.
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