Automatizimi i hyrjes në SecureCRT duke përdorur skriptet
Inxhinierët e rrjetit shpesh përballen me detyrën e kopjimit/ngjitjes së disa fragmenteve nga një bllok shënimesh në tastierë. Zakonisht duhet të kopjoni disa parametra: Emri i përdoruesit/Fjalëkalimi dhe diçka tjetër. Përdorimi i skripteve ju lejon të shpejtoni këtë proces. POR detyrat e shkrimit të skenarit dhe ekzekutimit të skenarit duhet të marrin më pak kohë në total sesa konfigurimi manual, përndryshe skriptet janë të padobishme.
Për çfarë është ky artikull? Ky artikull është nga seria Fast Start dhe synon të kursejë kohën e inxhinierëve të rrjetit kur konfigurojnë pajisjet (detyrë e vetme) në pajisje të shumta. Përdor softuerin SecureCRT dhe funksionalitetin e integruar të ekzekutimit të skriptit. Përmbajtje
Programi SecureCRT ka një mekanizëm të integruar të ekzekutimit të skriptit jashtë kutisë. Për çfarë janë skriptet terminale?
I/O i automatizuar dhe vërtetim minimal I/O.
Përshpejtoni ekzekutimin e detyrave rutinë - duke reduktuar pauzat midis cilësimeve të pajisjeve. (Reduktimi de fakto i pauzave të shkaktuara nga koha për të kryer veprimet e kopjimit/të kaluara në të njëjtin harduer, me 3 ose më shumë fragmente komande që do të aplikohen në harduer.)
Ky dokument mbulon detyrat:
Krijimi i skripteve të thjeshta.
Ekzekutimi i skripteve në SecureCRT.
Shembuj të përdorimit të skripteve të thjeshta dhe të avancuara. (Praktikoni nga jeta reale.)
Krijimi i skripteve të thjeshta.
Skriptet më të thjeshta përdorin vetëm dy komanda, Send dhe WaitForString. Ky funksionalitet është i mjaftueshëm për 90% (ose më shumë) të detyrave të kryera.
Skriptet mund të funksionojnë në Python, JS, VBS (Visual Basic), Perl, etj.
# $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
Zakonisht një skedar me shtesën "*.vbs"
Krijo një skript duke përdorur një hyrje skripti.
Ju lejon të automatizoni procesin e shkrimit të një skenari. Ju filloni të shkruani një skenar. SecureCRT regjistron komandat dhe përgjigjen pasuese të harduerit dhe shfaq skriptin e përfunduar për ju.
A. Filloni të shkruani skenar:
Menyja SecureCRT => Skript => Fillimi i skriptit të regjistrimit
b. Kryeni veprime me konsolën (kryeni hapat e konfigurimit në CLI).
V. Mbaro shkrimin e skenarit:
Menyja SecureCRT => Skript => Ndalo skriptin e regjistrimit…
Ruani skedarin e skriptit.
Shembull i komandave të ekzekutuara dhe skriptit të ruajtur:
Ekzekutimi i skripteve në SecureCRT.
Pas krijimit/redaktimit të skenarit, lind një pyetje e natyrshme: Si të zbatohet skenari?
Ka disa mënyra:
Ekzekutohet manualisht nga menyja Script
Fillimi automatik pas lidhjes (skript i hyrjes)
Hyrja automatike pa përdorur një skript
Aktivizimi manual me një buton në SecureCRT (një buton ende nuk është krijuar dhe shtuar në SecureCRT)
Ekzekutohet manualisht nga menyja Script
Menyja SecureCRT => Skript => Ekzekuto…
- 10 skriptet e fundit mbahen mend dhe disponohen për nisje të shpejtë:
Menyja SecureCRT => Skript => 1 "Emri i skedarit të skriptit"
Menyja SecureCRT => Skript => 2 "Emri i skedarit të skriptit"
Menyja SecureCRT => Skript => 3 "Emri i skedarit të skriptit"
Menyja SecureCRT => Skript => 4 "Emri i skedarit të skriptit"
Menyja SecureCRT => Skript => 5 "Emri i skedarit të skriptit"
Fillimi automatik pas lidhjes (skript i hyrjes)
Cilësimet e skriptit të regjistrimit automatik janë konfiguruar për seancën e ruajtur: Lidhja => Veprimet e hyrjes => Skripti i hyrjes
Hyrja automatike pa përdorur një skript
Është e mundur të futni automatikisht emrin e përdoruesit të fjalëkalimit pa shkruar një skript, duke përdorur vetëm funksionalitetin e integruar të SecureCRT. Në cilësimet e lidhjes "Lidhja" => Veprimet e hyrjes => Automatizimi i hyrjes - duhet të plotësoni disa paketa - që nënkuptojnë çiftet: "Teksti i pritshëm" + "Karakteret e dërguara në këtë tekst" mund të ketë shumë çifte të tilla. (Shembull: çifti i parë në pritje të emrit të përdoruesit, i dyti në pritje të fjalëkalimit, i treti në pritje të kërkesës së modalitetit të privilegjuar, çifti i katërt për fjalëkalimin e modalitetit të privilegjuar.)
Shembull i hyrjes automatike në Cisco ASA:
Aktivizimi manual me një buton në SecureCRT (një buton ende nuk është krijuar dhe shtuar në SecureCRT)
Në SecureCRT, mund t'i caktoni një skript një butoni. Butoni shtohet në një panel të krijuar posaçërisht për këtë qëllim.
A. Shtimi i një paneli në ndërfaqe: Menyja SecureCRT => Shiko => Shiriti i butonave
b. Shtoni një buton në panel dhe shtoni një skenar. – Klikoni me të djathtën në shiritin e butonave dhe zgjidhni “Butoni i ri…” nga menyja e kontekstit.
V. Në kutinë e dialogut "Map Button", në fushën "Veprim", zgjidhni veprimin (funksionin "Run Script".
Specifikoni një titull për butonin. Ngjyra për ikonën e butonit. Përfundoni cilësimet duke klikuar Ok.
Shenim:
Paneli me butona është funksionalitet shumë i dobishëm.
1. Është e mundur, kur identifikoheni në një sesion specifik, të specifikoni se cilin panel të hapet në këtë skedë si parazgjedhje.
2. Është e mundur të vendosni veprime të paracaktuara për veprimet standarde me pajisje: shfaq versionin e shfaqjes, shfaqjen e konfigurimit të ekzekutimit, ruajtjen e konfigurimit.
Asnjë skrip nuk është i bashkangjitur me këta butona. Vetëm linja e veprimit:
Cilësimi - në mënyrë që kur kaloni në një seancë, paneli i nevojshëm me butona të hapet në cilësimet e sesionit:
Ka kuptim që klienti të konfigurojë skriptet individuale për Login dhe të shkojë në panel me komanda të shpeshta për shitësin.
Kur shtypni butonin Go Cisco, paneli kalon në shiritin e butonave Cisco.
Shembuj të përdorimit të skripteve të thjeshta dhe të avancuara. (Praktikoni nga jeta reale.)
Skriptet e thjeshta janë të mjaftueshme për pothuajse të gjitha rastet. Por një herë më duhej ta ndërlikoja pak skenarin - për të shpejtuar punën. Ky ndërlikim thjesht kërkoi të dhëna shtesë në një kuti dialogu nga përdoruesi.
Kërkimi i të dhënave nga përdoruesi duke përdorur një kuti dialogu
Në skriptin e kërkesës për të dhëna kisha 2. Ky është emri i hostit dhe okteti i katërt i adresës IP. Për të kryer këtë veprim - kërkova në google se si ta bëj dhe e gjeta në faqen zyrtare të SecureCRT (vandyke). - funksionaliteti quhet prompt.
Kjo pjesë e skriptit kërkoi emrin e hostit dhe numrat nga okteti i fundit. Meqenëse kishte 15 pajisje. Dhe të dhënat u prezantuan në një tabelë, pastaj kopjova vlerat nga tabela dhe i ngjita në kutitë e dialogut. Më tej, skenari funksionoi në mënyrë të pavarur.
Kopjimi i FTP në pajisjet e rrjetit.
Ky skript hapi dritaren time të komandës (predhë) dhe kopjoi të dhënat përmes FTP. Në fund mbyllni seancën. Është e pamundur të përdoret notepad për këtë, sepse kopjimi kërkon një kohë shumë të gjatë dhe të dhënat në buferin FTP nuk do të ruhen për aq kohë:
# $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()
Futja e emrit të përdoruesit/fjalëkalimit duke përdorur një skript
Në një klient, qasja direkt në pajisjet e rrjetit u mbyll. U bë e mundur futja në pajisje duke u lidhur fillimisht me Default Gateway, dhe prej saj më pas me pajisjet e lidhura me të. Klienti ssh i integruar në softuerin IOS/hardware është përdorur për t'u lidhur. Prandaj, emri i përdoruesit dhe fjalëkalimi u kërkuan në tastierë. Me skriptin më poshtë, emri i përdoruesit dhe fjalëkalimi u futën automatikisht:
# $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()
Shënim: Kishte 2 skripta, një për llogarinë e administratorit, tjetri për llogarinë eSIGHT.
Skript me aftësinë për të shtuar drejtpërdrejt të dhëna gjatë ekzekutimit të skriptit.
Detyra ishte të shtohej një rrugë statike në të gjitha pajisjet e rrjetit. Por porta në internet në secilën pajisje ishte e ndryshme (dhe ndryshonte nga porta e paracaktuar). Skripti i mëposhtëm shfaqi tabelën e kursit, hyri në modalitetin e konfigurimit, nuk e shkruajti komandën deri në fund (adresa IP e portës në internet) - Unë shtova këtë pjesë. Pasi shtypa Enter, skripti vazhdoi të ekzekutonte komandën.
# $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ë këtë skript, në rreshtin: crt.Screen.Send("ip route 10.10.10.8 255.255.255.252 ") adresa IP e portës nuk shtohet dhe nuk ka karakter kthimi të transportit. Skripti është duke pritur për rreshtin tjetër me karakteret "(config) #" Këto karaktere u shfaqën pasi futa adresën ip dhe hyra.
Përfundim:
Kur shkruani një skript dhe e ekzekutoni atë, duhet të respektohet rregulli: Koha për të shkruar një skript dhe për të ekzekutuar një skenar nuk duhet të jetë kurrë më shumë se koha e shpenzuar teorikisht për të bërë të njëjtën punë me dorë (kopjoni / ngjitni nga një bllok shënimesh, shkrim dhe korrigjimi një libër lojërash për shkrimin ansible, shkrimin dhe korrigjimin e python-it). Kjo do të thotë, përdorimi i skriptit duhet të kursejë kohë dhe të mos humbasë kohë në automatizimin një herë të proceseve (d.m.th., kur skenari është unik dhe nuk do të ketë më përsëritje). Por nëse skripti është unik dhe automatizimi me skriptin dhe shkrimi/debugimi i skriptit kërkon më pak kohë sesa ta bësh atë në ndonjë mënyrë tjetër (ansible, dritare komanduese), atëherë skripti është zgjidhja më e mirë.
Korrigjimi i një skripti. Skripti rritet gradualisht, korrigjimi i gabimeve ndodh në fillim në pajisjen e parë, të dytë, të tretë dhe nga e katërta skenari ka shumë të ngjarë të jetë plotësisht funksional.
Drejtimi i një skripti (duke futur emrin e përdoruesit+fjalëkalimin) me miun është zakonisht më i shpejtë se kopjimi i emrit të përdoruesit dhe fjalëkalimit nga një bllok shënimesh. Por jo i sigurt nga pikëpamja e sigurisë.
Një shembull tjetër (i vërtetë) kur përdorni një skript: Nuk keni akses të drejtpërdrejtë në pajisjet e rrjetit. Por ekziston nevoja për të konfiguruar të gjitha pajisjet e rrjetit (futeni në sistemin e monitorimit, konfiguroni një emër përdoruesi/fjalëkalim/snmpv3 emër/fjalëkalim shtesë). Ka akses kur shkoni te çelësi Core, prej tij hapni SSH në pajisje të tjera. Pse nuk mund të përdorni Ansible. - Sepse kemi një kufi në numrin e seancave të lejuara të njëkohshme në pajisjet e rrjetit (linja vty 0 4, ndërfaqja e përdoruesit vty 0 4) (një pyetje tjetër është se si të nisim pajisje të ndryshme në Ansible me të njëjtin hop të parë SSH).
Skripti zvogëlon kohën gjatë operacioneve të gjata - për shembull, kopjimi i skedarëve përmes FTP. Pas përfundimit të kopjimit, skenari fillon të funksionojë menjëherë. Një person do të duhet të shohë fundin e kopjimit, më pas të kuptojë fundin e kopjimit, pastaj të futë komandat e duhura. Skenari e bën atë objektivisht më shpejt.
Skriptet janë të zbatueshme aty ku është e pamundur të përdoren mjete të shpërndarjes masive të të dhënave: Konsola. Ose kur disa nga të dhënat për pajisjen janë unike: emri i hostit, adresa ip e menaxhimit. Ose kur shkruani një program dhe korrigjoni gabimet, është më e vështirë sesa të shtoni të dhëna të marra nga pajisja gjatë ekzekutimit të skriptit. - Një shembull me një skript për përshkrimin e një rruge, kur secila pajisje ka adresën e vet IP të ofruesit të Internetit. (Kolegët e mi shkruan skripta të tillë - kur foli DMVPN ishte mbi 3. Ishte e nevojshme të ndryshoheshin cilësimet DMVPN).
Studim rasti: Konfigurimi i cilësimeve fillestare në një ndërprerës të ri duke përdorur portat e konsolës:
A. Futi kabllon e konsolës në pajisje.
B. Ekzekutoni skenarin
B. Prisja për ekzekutimin e skenarit
D. Fudhi kabllon e konsolës në pajisjen tjetër.
E. Nëse çelësi nuk është i fundit, shkoni në hapin B.
Si rezultat i punës së skenarit:
fjalëkalimi fillestar vendoset në pajisje.
Emri i përdoruesit u fut
futet adresa IP unike e pajisjes.
PS operacioni duhej të përsëritej. Sepse ssh e paracaktuar nuk ishte konfiguruar/çaktivizuar. (Po, ky është gabimi im.)
Një shembull i një skripti të gjatë, me dy pyetje: Emri i hostit dhe adresa IP. Ai u krijua për paracaktimin e pajisjeve përmes konsolës (9600 baud). Dhe gjithashtu për të përgatitur lidhjen e pajisjeve me rrjetin.
Skriptet e tilla zakonisht nuk nevojiten, por sasia e pajisjeve është 15 copë. Lejohet konfigurimi më i shpejtë. Ishte më e shpejtë për të konfiguruar pajisjet duke përdorur dritaren e komandës SecureCRT.
Krijimi i një llogarie për ssh.
Një shembull tjetër. Konfigurimi bëhet gjithashtu nëpërmjet konsolës.
# $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()
Rreth SecureCRT:Softuer me pagesë: nga 99 dollarë (çmimi më i vogël është vetëm për SecureCRT për një vit) Faqja zyrtare
Një licencë softueri blihet një herë, me mbështetje (për përditësim), pastaj softueri përdoret me këtë licencë për një kohë të pakufizuar.
Punon në sistemet operative Mac OS X dhe Windows.
Ekziston mbështetje për skriptin (ky artikull)
Ka Dritarja e komandës
Sistemi Operativ Serial/Telnet/SSH1/SSH2/Shell