ProHoster > Blog > Uprava > Avtomatiziranje vnosa v SecureCRT z uporabo skriptov
Avtomatiziranje vnosa v SecureCRT z uporabo skriptov
Omrežni inženirji se pogosto soočajo s kopiranjem/lepljenjem določenih fragmentov iz beležnice v konzolo. Običajno morate kopirati več parametrov: uporabniško ime/geslo in še kaj. Uporaba skriptov vam omogoča, da pospešite ta proces. VENDAR bi morali nalogi pisanja skripta in izvajanja skripta skupno vzeti manj časa kot ročna konfiguracija, sicer so skripti neuporabni.
Čemu je namenjen ta članek? Ta članek je iz serije Fast Start in je namenjen prihranku časa omrežnim inženirjem pri nastavljanju opreme (ena naloga) na več napravah. Uporablja programsko opremo SecureCRT in vgrajeno funkcijo izvajanja skripta. Vsebina
Program SecureCRT ima takoj vgrajen mehanizem za izvajanje skriptov. Čemu so terminalski skripti?
Avtomatski V/I in minimalno preverjanje V/I.
Pospešite izvajanje rutinskih nalog - zmanjšajte premore med nastavitvami opreme. (Dejansko zmanjšanje premorov, ki jih povzroči čas za izvajanje dejanj kopiranja/preteklih dejanj na isti strojni opremi, s 3 ali več fragmenti ukazov, ki se uporabijo za strojno opremo.)
Ta dokument zajema naloge:
Izdelava preprostih skript.
Izvajanje skriptov na SecureCRT.
Primeri uporabe preprostih in naprednih skriptov. (Vaja iz resničnega življenja.)
Izdelava preprostih skript.
Najenostavnejši skripti uporabljajo samo dva ukaza, Send in WaitForString. Ta funkcionalnost zadostuje za 90% (ali več) opravljenih nalog.
Skripte lahko delujejo v Pythonu, JS, VBS (Visual Basic), Perlu itd.
# $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čajno datoteka s pripono "*.vbs"
Ustvarite skript z vnosom skripta.
Omogoča vam avtomatizacijo postopka pisanja skripta. Začnete pisati scenarij. SecureCRT beleži ukaze in kasnejši odziv strojne opreme ter vam prikaže dokončan skript.
A. Začni pisati skript:
Meni SecureCRT => Skript => Začni snemati skript
b. Izvedite dejanja s konzolo (izvedite konfiguracijske korake v CLI).
V. Dokončajte pisanje scenarija:
Meni SecureCRT => Skript => Ustavi snemanje skripta…
Shranite datoteko skripta.
Primer izvedenih ukazov in shranjenega skripta:
Izvajanje skriptov na SecureCRT.
Po izdelavi/urejanju skripte se pojavi logično vprašanje: Kako aplicirati skripto?
Obstaja več načinov:
Zagon ročno iz menija Skript
Samodejni zagon po povezavi (prijavni skript)
Samodejna prijava brez uporabe skripta
Ročno sprožitev z gumbom v SecureCRT (gumb je treba še ustvariti in dodati v SecureCRT)
Zagon ročno iz menija Skript
Meni SecureCRT => Skript => Zaženi…
- Zadnjih 10 skriptov si je zapomnil in je na voljo za hiter zagon:
Meni SecureCRT => Skript => 1 "Ime datoteke skripta"
Meni SecureCRT => Skript => 2 "Ime datoteke skripta"
Meni SecureCRT => Skript => 3 "Ime datoteke skripta"
Meni SecureCRT => Skript => 4 "Ime datoteke skripta"
Meni SecureCRT => Skript => 5 "Ime datoteke skripta"
Samodejni zagon po povezavi (prijavni skript)
Nastavitve skripta za samodejno beleženje so konfigurirane za shranjeno sejo: Povezava => Dejanja prijave => Skript za prijavo
Samodejna prijava brez uporabe skripta
Možno je samodejno vnesti uporabniško ime ali geslo brez pisanja skripta, z uporabo samo vgrajene funkcionalnosti SecureCRT. V nastavitvah povezave “Connection” => Logon Actions => Automate logon - izpolniti morate več svežnjev - kar pomeni pare: “Pričakovano besedilo” + “Poslani znaki v to besedilo” takih parov je lahko veliko. (Primer: 1. par čaka na uporabniško ime, drugi čaka na geslo, tretji čaka na poziv v privilegiranem načinu, četrti par na geslo v privilegiranem načinu.)
Primer samodejne prijave v Cisco ASA:
Ročno sprožitev z gumbom v SecureCRT (gumb je treba še ustvariti in dodati v SecureCRT)
V SecureCRT lahko gumbu dodelite skript. Gumb je dodan na posebej za ta namen ustvarjeno ploščo.
A. Dodajanje plošče v vmesnik: Meni SecureCRT => Pogled => Vrstica z gumbi
b. Dodajte gumb na ploščo in dodajte skript. – Z desno miškino tipko kliknite vrstico z gumbi in v kontekstnem meniju izberite »Nov gumb…«.
V. V pogovornem oknu »Gumb zemljevida« v polju »Dejanje« izberite dejanje (funkcijo) »Zaženi skript«.
Določite napis za gumb. Barva ikone gumba. Nastavitve zaključimo s klikom na V redu.
Opomba:
Plošča z gumbi je zelo uporabna funkcionalnost.
1. Ko se prijavite v določeno sejo, lahko določite, katero ploščo želite privzeto odpreti za ta zavihek.
2. Možno je nastaviti vnaprej določena dejanja za standardna dejanja z opremo: prikaži prikaži različico, prikaži tekoče konfiguracije, shrani konfiguracijo.
Tem gumbom ni priložen noben skript. Samo akcijska linija:
Nastavitev - tako da se ob preklopu na sejo v nastavitvah seje odpre potrebna plošča z gumbi:
Smiselno je, da stranka nastavi posamezne skripte za prijavo in gre na ploščo s pogostimi ukazi za prodajalca.
Ko pritisnete gumb Go Cisco, se plošča preklopi na vrstico z gumbi Cisco.
Primeri uporabe preprostih in naprednih skriptov. (Vaja iz resničnega življenja.)
Preprosti scenariji so dovolj za skoraj vse priložnosti. Toda enkrat sem moral malo zakomplicirati scenarij - da bi pospešil delo. Ta zaplet je samo zahteval dodatne podatke v pogovornem oknu od uporabnika.
Zahtevanje podatkov od uporabnika z uporabo pogovornega okna
V skriptu zahteve za podatke sem imel 2. To je ime gostitelja in 4. oktet naslova IP. Za izvedbo tega dejanja - poguglal sem, kako to storiti, in našel na uradni spletni strani SecureCRT (vandyke). - funkcionalnost se imenuje poziv.
Ta del skripta zahteva ime gostitelja in številke iz zadnjega okteta. Ker je bilo 15 kosov opreme. In podatki so bili predstavljeni v tabeli, nato sem kopiral vrednosti iz tabele in jih prilepil v pogovorna okna. Nadalje je scenarij deloval samostojno.
FTP kopiranje v omrežno opremo.
Ta skript je zagnal moje ukazno okno (lupino) in kopiral podatke prek FTP. Na koncu zaključite sejo. Za to ni mogoče uporabiti beležnice, ker kopiranje traja zelo dolgo in podatki v medpomnilniku FTP ne bodo shranjeni tako dolgo:
# $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()
Vnos uporabniškega imena/gesla s pomočjo skripte
Pri eni stranki je bil zaprt neposreden dostop do omrežne opreme. V opremo je bilo mogoče vstopiti tako, da se je najprej povezal s privzetim prehodom, iz njega pa nato še z nanj povezano opremo. Za povezavo je bil uporabljen odjemalec ssh, vgrajen v programsko opremo IOS/strojne opreme. V skladu s tem sta bila v konzoli zahtevana uporabniško ime in geslo. S spodnjim skriptom sta bila uporabniško ime in geslo vnesena samodejno:
# $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()
Opomba: Obstajata 2 skripta. Eden za skrbniški račun, drugi za račun eSIGHT.
Skript z možnostjo neposrednega dodajanja podatkov med izvajanjem skripta.
Naloga je bila dodati statično pot na vso omrežno opremo. Vendar je bil prehod do interneta na vsaki opremi drugačen (in razlikoval se je od privzetega prehoda). Naslednji skript je prikazal usmerjevalno tabelo, vstopil v konfiguracijski način, ni napisal ukaza do konca (IP naslov prehoda v internet) - ta del sem dodal. Ko sem pritisnil Enter, je skript nadaljeval z izvajanjem ukaza.
# $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()
V tem skriptu v vrstici: crt.Screen.Send("ip route 10.10.10.8 255.255.255.252 ") naslov IP prehoda ni dodan in ni znaka za vrnitev v prvi vrstico. Skript čaka na naslednjo vrstico z znaki "(config) #" Ti znaki so se pojavili, ko sem vnesel naslov ip in enter.
Zaključek:
Pri pisanju skripta in njegovem izvajanju je treba upoštevati pravilo: Čas za pisanje skripta in izvajanje skripta nikoli ne sme biti daljši od časa, ki ga teoretično porabimo za ročno opravljanje istega dela (kopiranje/prilepitev iz beležnice, pisanje in odpravljanje napak). priročnik za ansible, pisanje in razhroščevanje skripta python). To pomeni, da bi morala uporaba skripta prihraniti čas in ne izgubljati časa za enkratno avtomatizacijo procesov (tj. Ko je skript edinstven in se ne bo več ponavljalo). Če pa je skript edinstven in avtomatizacija s skriptom ter pisanje/razhroščevanje skripta traja manj časa kot izvajanje na kateri koli drug način (ansible, ukazno okno), potem je skript najboljša rešitev.
Odpravljanje napak v skriptu. Skript raste postopoma, odpravljanje napak poteka ob zagonu na prvi, drugi, tretji napravi, do četrte pa bo skript najverjetneje že popolnoma deloval.
Zagon skripta (z vnosom uporabniškega imena+gesla) z miško je običajno hitrejši od kopiranja uporabniškega imena in gesla iz beležke. Vendar ni varno z varnostnega vidika.
Drug (resničen) primer pri uporabi skripte: Nimate neposrednega dostopa do omrežne opreme. Vendar pa je treba konfigurirati vso omrežno opremo (prenesti jo v nadzorni sistem, konfigurirati dodatno uporabniško ime/geslo/snmpv3uporabniško ime/geslo). Dostop je, ko greste do stikala Core, od koder odprete SSH do druge opreme. Zakaj ne morete uporabiti Ansible. - Ker naletimo na omejitev števila dovoljenih sočasnih sej na omrežni opremi (linija vty 0 4, uporabniški vmesnik vty 0 4) (drugo vprašanje je, kako zagnati različno opremo v Ansibleu z istim prvim skokom SSH).
Skript skrajša čas med dolgimi operacijami - na primer kopiranje datotek prek FTP. Po končanem kopiranju začne skript takoj delovati. Oseba bo morala videti konec kopiranja, nato ugotoviti konec kopiranja in nato vnesti ustrezne ukaze. Scenarij to naredi objektivno hitreje.
Skripti so uporabni tam, kjer ni mogoče uporabiti orodij za dostavo množičnih podatkov: Konzola. Ali ko so nekateri podatki za opremo edinstveni: ime gostitelja, naslov IP za upravljanje. Ali pa je pri pisanju programa in odpravljanju napak to težje kot dodajanje podatkov, prejetih iz opreme, medtem ko se skript izvaja. - Primer s skripto za predpisovanje poti, ko ima vsaka oprema svoj IP naslov internetnega ponudnika. (Moji kolegi so napisali takšne skripte - ko je DMVPN govoril, je bilo več kot 3. Treba je bilo spremeniti nastavitve DMVPN).
Študija primera: Konfiguriranje začetnih nastavitev na novem stikalu z uporabo vrat konzole:
A. Priključite kabel konzole v napravo.
B. Zaženite skript
B. Čakal na izvedbo skripta
D. Priključite kabel konzole v naslednjo napravo.
E. Če stikalo ni zadnje, pojdite na korak B.
Kot rezultat dela skripta:
začetno geslo je nastavljeno na opremi.
Uporabniško ime vneseno
vnese se edinstven IP naslov naprave.
PS operacijo je bilo treba ponoviti. Ker privzeti ssh ni bil konfiguriran/onemogočen. (Da, to je moja napaka.)
Primer dolgega skripta z dvema poizvedbama: ime gostitelja in naslov IP. Ustvarjen je za prednastavitev opreme preko konzole (9600 baud). In tudi za pripravo povezave opreme z omrežjem.
Takšni skripti običajno niso potrebni, vendar je količina opreme 15 kosov. Omogoča hitrejšo nastavitev. Hitreje je bilo nastaviti opremo z ukaznim oknom SecureCRT.
Nastavitev računa za ssh.
Še en primer. Konfiguracija poteka tudi prek 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:Plačljiva programska oprema: od 99 $ (najnižja cena je samo za SecureCRT za eno leto) Uradna spletna stran
Licenca programske opreme se kupi enkrat, s podporo (za posodabljanje), nato se programska oprema s to licenco uporablja neomejeno časa.
Deluje na operacijskih sistemih Mac OS X in Windows.
Obstaja podpora za skripte (ta članek)
Obstaja Ukazno okno
Operacijski sistem Serial/Telnet/SSH1/SSH2/Shell