SecureCRT-i sisestamise automatiseerimine skriptide abil
Võrguinsenerid seisavad sageli silmitsi ülesandega kopeerida/kleepida teatud fragmente märkmikust konsooli. Tavaliselt tuleb kopeerida mitu parameetrit: Kasutajanimi/Parool ja midagi muud. Skriptide kasutamine võimaldab teil seda protsessi kiirendada. AGA skripti kirjutamise ja skripti täitmise ülesanded peaksid võtma vähem aega kui käsitsi seadistamine, vastasel juhul on skriptid kasutud.
Milleks see artikkel mõeldud on? See artikkel pärineb Fast Start seeriast ja selle eesmärk on säästa võrguinseneride aega seadmete seadistamisel (üks ülesanne) mitmes seadmes. Kasutab SecureCRT tarkvara ja sisseehitatud skripti täitmise funktsionaalsust. Sisu
SecureCRT programmil on sisseehitatud skripti käivitamise mehhanism. Mille jaoks on terminali skriptid?
Automatiseeritud I/O ja minimaalne I/O valideerimine.
Kiirendage rutiinsete toimingute täitmist – vähendage pause seadme seadistuste vahel. (Tegelikult väheneb pausid, mis on põhjustatud samas riistvaras kopeerimis-/minevikutoimingute tegemise ajast, riistvarale rakendades kolme või enama käsufragmenti.)
See dokument hõlmab järgmisi ülesandeid:
Lihtsate skriptide loomine.
Skriptide käitamine SecureCRT-s.
Näited lihtsate ja täiustatud skriptide kasutamisest. (Harjutage päriselust.)
Lihtsate skriptide loomine.
Lihtsamad skriptid kasutavad ainult kahte käsku, Send ja WaitForString. Sellest funktsionaalsusest piisab 90% (või enama) sooritatud ülesannete jaoks.
Skriptid võivad töötada Pythonis, JS-is, VBS-is (Visual Basic), Perlis jne.
# $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
Tavaliselt fail laiendiga "*.vbs"
Looge skript skriptikirje abil.
Võimaldab automatiseerida skripti kirjutamise protsessi. Hakkate stsenaariumi kirjutama. SecureCRT salvestab käsud ja sellele järgneva riistvaravastuse ning kuvab teie jaoks valmis skripti.
A. Alusta skripti kirjutamist:
SecureCRT Menu => Skript => Alusta skripti salvestamist
b. Tehke konsooliga toiminguid (sooritage konfiguratsioonitoimingud CLI-s).
V. Lõpetage skripti kirjutamine:
Menüü SecureCRT => Skript => Peata skripti salvestamine…
Salvestage skriptifail.
Täidetud käskude ja salvestatud skripti näide:
Skriptide käitamine SecureCRT-s.
Pärast skripti loomist/toimetamist tekib loomulik küsimus: kuidas skripti rakendada?
On mitmeid viise:
Käsitsi käivitamine menüüst Skript
Automaatne käivitamine pärast ühendamist (sisselogimisskript)
Automaatne sisselogimine ilma skripti kasutamata
Käivitamine käsitsi SecureCRT-i nupuga (nupp tuleb veel luua ja SecureCRT-sse lisada)
Käsitsi käivitamine menüüst Skript
SecureCRT menüü => Skript => Käivita…
- Viimased 10 skripti jäetakse meelde ja need on kiireks käivitamiseks saadaval:
SecureCRT menüü => Skript => 1 "Skripti faili nimi"
SecureCRT menüü => Skript => 2 "Skripti faili nimi"
SecureCRT menüü => Skript => 3 "Skripti faili nimi"
SecureCRT menüü => Skript => 4 "Skripti faili nimi"
SecureCRT menüü => Skript => 5 "Skripti faili nimi"
Automaatne käivitamine pärast ühendamist (sisselogimisskript)
Salvestatud seansi jaoks on seadistatud automaatse logimisskripti sätted: Ühendus => Sisselogimistoimingud => Sisselogimisskript
Automaatne sisselogimine ilma skripti kasutamata
Parooli kasutajanime on võimalik automaatselt sisestada ilma skripti kirjutamata, kasutades ainult SecureCRT sisseehitatud funktsionaalsust. Ühendusseadetes "Ühendus" => Sisselogimistoimingud => Automatiseeri sisselogimine - peate täitma mitu kimpu - mis tähendab paare: "Oodatav tekst" + "Sellesse teksti saadetud märgid" võib selliseid paare olla palju. (Näide: esimene paar ootab kasutajanime, teine parooli, kolmas ootab privilegeeritud režiimi viipa, neljas paar privilegeeritud režiimi parooli.)
Näide automaatsest sisselogimisest Cisco ASA-s:
Käivitamine käsitsi SecureCRT-i nupuga (nupp tuleb veel luua ja SecureCRT-sse lisada)
SecureCRT-s saate määrata nupule skripti. Nupp lisatakse spetsiaalselt selleks loodud paneelile.
A. Paneeli lisamine liidesele: SecureCRT Menu => View => Button Bar
b. Lisage paneelile nupp ja lisage skript. – Paremklõpsake nupuribal ja valige kontekstimenüüst "Uus nupp...".
V. Dialoogiboksi "Kaardinupp" väljal "Toiming" valige toiming (funktsioon) "Käivita skript".
Määrake nupu pealkiri. Nupuikooni värv. Lõpetage seaded, klõpsates nuppu OK.
Märkus:
Nuppudega paneel on väga kasulik funktsionaalsus.
1. Konkreetsele seansile sisselogimisel on võimalik määrata, milline paneel sellele vahekaardile vaikimisi avada.
2. Seadmega standardtoimingute jaoks on võimalik määrata etteantud toiminguid: näita näita versiooni, näita jooksvat konfiguratsiooni, salvesta konfiguratsiooni.
Nendele nuppudele pole lisatud ühtegi skripti. Ainult tegevussuund:
Seadistamine - nii et seansile lülitudes avaneb seansi seadetes vajalik nuppudega paneel:
Kliendil on mõistlik seadistada sisselogimiseks individuaalsed skriptid ja minna paneelile, kus on müüjale sagedased käsud.
Kui vajutate nuppu Go Cisco, lülitub paneel Cisco nupuribale.
Näited lihtsate ja täiustatud skriptide kasutamisest. (Harjutage päriselust.)
Peaaegu kõikidel juhtudel piisab lihtsatest skriptidest. Aga ükskord oli mul vaja skripti veidi keerulisemaks muuta – et tööd kiirendada. See tüsistus nõudis kasutajalt lihtsalt dialoogiboksis täiendavaid andmeid.
Kasutajalt andmete küsimine dialoogiboksi abil
Mul oli andmepäringu skriptis 2. See on hostinimi ja IP-aadressi 4. oktett. Selle toimingu sooritamiseks otsisin googeldades, kuidas seda teha ja leidsin selle SecureCRT (vandyke) ametlikult veebisaidilt. - funktsiooni nimetatakse viipeks.
See skripti osa küsis hostinime ja viimase okteti numbreid. Kuna varustust oli 15 tükki. Ja andmed esitati tabelis, siis kopeerisin väärtused tabelist ja kleepisin need dialoogiboksidesse. Edasi töötas stsenaarium iseseisvalt.
FTP kopeerimine võrguseadmetesse.
See skript käivitas minu käsuakna (shelli) ja kopeeris andmed FTP kaudu. Lõpus sulgege seanss. Notepadi ei saa selleks kasutada, kuna kopeerimine võtab väga kaua aega ja FTP puhvris olevaid andmeid nii kaua ei säilitata:
# $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()
Kasutajanime/parooli sisestamine skripti abil
Ühel kliendil suleti juurdepääs otse võrguseadmetele. Seadmesse oli võimalik siseneda, ühendades esmalt Default Gatewayga ja sealt seejärel sellega ühendatud seadmetega. Ühenduse loomiseks kasutati IOS-i/riistvaratarkvara sisseehitatud ssh-klienti. Vastavalt sellele küsiti konsoolis kasutajanime ja parooli. Alloleva skriptiga sisestati kasutajanimi ja parool automaatselt:
# $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()
Märkus: skripte oli 2. Üks administraatori konto jaoks, teine eSIGHT konto jaoks.
Skript, mis võimaldab skripti täitmise ajal andmeid otse lisada.
Ülesandeks oli kõikidele võrguseadmetele staatilise marsruudi lisamine. Kuid iga seadme Interneti-värav oli erinev (ja see erines vaikelüüsist). Järgmine skript kuvas marsruutimistabeli, sisenes konfiguratsioonirežiimi, ei kirjutanud käsku lõpuni (interneti lüüsi IP-aadress) - lisasin selle osa. Pärast sisestusklahvi vajutamist jätkas skript käsu täitmist.
# $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()
Selle skripti reale: crt.Screen.Send("ip route 10.10.10.8 255.255.255.252 ") lüüsi IP-aadressi ei lisata ja carriage return märki pole. Skript ootab järgmist rida märkidega "(config) #" Need märgid ilmusid pärast ip-aadressi sisestamist ja sisestamist.
Järeldus:
Skripti kirjutamisel ja täitmisel tuleb järgida reeglit: Skripti kirjutamiseks ja skripti täitmiseks kuluv aeg ei tohiks kunagi ületada aega, mis teoreetiliselt kulub sama töö käsitsi tegemiseks (märkmikust kopeerimine/kleepimine, kirjutamine ja silumine). mänguraamat ansible, pythoni skripti kirjutamiseks ja silumiseks). See tähendab, et skripti kasutamine peaks säästma aega ja mitte raiskama aega protsesside ühekordsele automatiseerimisele (st kui skript on ainulaadne ja enam ei kordu). Aga kui skript on unikaalne ja skriptiga automatiseerimine ja skripti kirjutamine/silumine võtab vähem aega kui muul viisil (ansible, käsuaken) tegemine, siis on skript parim lahendus.
Skripti silumine. Skript kasvab järk-järgult, silumine toimub esimese, teise, kolmanda seadme sissetöötamisel ja neljandaks on skript suure tõenäosusega täielikult töökorras.
Skripti käivitamine (sisestades kasutajanimi+parool) hiirega on tavaliselt kiirem kui kasutajanime ja parooli kopeerimine märkmikust. Kuid mitte turvalisuse seisukohast ohutu.
Teine (tõeline) näide skripti kasutamisel: Teil pole otsest juurdepääsu võrguseadmetele. Kuid on vaja seadistada kõik võrguseadmed (too see seiresüsteemi, seadistada täiendav Kasutajanimi/parool/snmpv3kasutajanimi/parool). Juurdepääs on siis, kui lähete Core switchi juurde, sealt avate SSH muudele seadmetele. Miks te ei saa Ansible'i kasutada. - Kuna me puutume kokku võrguseadmetes lubatud samaaegsete seansside arvu piiranguga (rida vty 0 4, kasutajaliides vty 0 4) (teine küsimus on, kuidas käivitada Ansible'is erinevaid seadmeid sama SSH esimese hüppega).
Skript vähendab aega pikkade toimingute puhul – näiteks failide kopeerimine FTP kaudu. Pärast kopeerimise lõpetamist hakkab skript kohe tööle. Inimene peab nägema kopeerimise lõppu, mõistma kopeerimise lõppu ja seejärel sisestama vastavad käsud. Skript teeb seda objektiivselt kiiremini.
Skriptid on rakendatavad, kui pole võimalik kasutada massiandmete edastamise tööriistu: konsool. Või kui osa seadme andmetest on kordumatud: hostinimi, halduse IP-aadress. Või on programmi kirjutamine ja silumine keerulisem kui seadmelt saadud andmete lisamine skripti töötamise ajal. - Näide marsruudi määramise skriptiga, kui igal seadmel on oma Interneti-teenuse pakkuja IP-aadress. (Minu kolleegid kirjutasid selliseid skripte - kui DMVPN-i kõne oli üle 3. Oli vaja muuta DMVPN-i seadeid).
Juhtumiuuring: uue lüliti algsätete konfigureerimine konsooliportide abil:
A. Ühendas konsooli kaabli seadmega.
B. Käivitage skript
B. Ootas stsenaariumi täitmist
D. Ühendas konsooli kaabli järgmise seadmega.
E. Kui lüliti pole viimane, jätkake sammuga B.
Skriptitöö tulemusena:
esialgne parool on seadistatud seadmele.
Kasutajanimi sisestatud
sisestatakse seadme kordumatu IP-aadress.
PS operatsiooni tuli korrata. Kuna vaikimisi ssh ei olnud konfigureeritud/keelatud. (Jah, see on minu viga.)
Näide pikast skriptist, millel on kaks päringut: hostinimi ja IP-aadress. See loodi seadmete eelhäälestamiseks konsooli kaudu (9600 boodi). Ja ka seadmete võrguga ühendamise ettevalmistamiseks.
Tavaliselt pole selliseid skripte vaja, kuid varustuse kogus on 15 tk. Lubatud kiirem seadistamine. Kiirem oli seadmete seadistamine SecureCRT Command akna abil.
Ssh-i konto seadistamine.
Veel üks näide. Seadistamine toimub ka konsooli kaudu.
# $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()
Teave SecureCRT kohta:Tasuline tarkvara: alates 99 dollarist (väikseim hind on ainult SecureCRT jaoks üheks aastaks) Ametlik kodulehekülg
Tarkvaralitsents ostetakse üks kord koos toega (värskendamiseks), seejärel kasutatakse tarkvara selle litsentsiga piiramatu aja jooksul.
Töötab operatsioonisüsteemides Mac OS X ja Windows.
Skripti tugi on olemas (see artikkel)
On Käsuaken
Serial/Telnet/SSH1/SSH2/Shelli operatsioonisüsteem