Įvedimo į SecureCRT automatizavimas naudojant scenarijus
Tinklo inžinieriai dažnai susiduria su užduotimi nukopijuoti / įklijuoti tam tikrus fragmentus iš bloknoto į konsolę. Dažniausiai tenka nukopijuoti kelis parametrus: Vartotojo vardas/Slaptažodis ir dar kažkas. Scenarijų naudojimas leidžia pagreitinti šį procesą. BET scenarijaus rašymo ir scenarijaus vykdymo užduotys iš viso turėtų užtrukti mažiau laiko nei rankinis konfigūravimas, kitaip scenarijai yra nenaudingi.
Kam skirtas šis straipsnis? Šis straipsnis yra iš Fast Start serijos ir skirtas sutaupyti tinklo inžinierių laiką, kai nustatote įrangą (viena užduotis) keliuose įrenginiuose. Naudoja SecureCRT programinę įrangą ir įmontuotą scenarijaus vykdymo funkciją. Turinys
„SecureCRT“ programoje yra įmontuotas scenarijaus vykdymo mechanizmas. Kam skirti terminalo scenarijai?
Automatinis I/O ir minimalus I/O patvirtinimas.
Paspartinkite įprastų užduočių vykdymą – sumažinkite pauzes tarp įrangos nustatymų. (De facto sumažinamos pauzės, kurias sukelia laikas atlikti kopijavimo / praeities veiksmus toje pačioje aparatinėje įrangoje, aparatinei įrangai pritaikius 3 ar daugiau komandų fragmentų.)
Šis dokumentas apima šias užduotis:
Paprastų scenarijų kūrimas.
Scenarijų vykdymas SecureCRT.
Paprastų ir išplėstinių scenarijų naudojimo pavyzdžiai. (Praktika iš realaus gyvenimo.)
Paprastų scenarijų kūrimas.
Paprasčiausi scenarijai naudoja tik dvi komandas – Send ir WaitForString. Šios funkcijos pakanka 90% (ar daugiau) atliekamų užduočių.
Scenarijai gali veikti Python, JS, VBS (Visual Basic), Perl ir kt.
# $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
Paprastai failas su plėtiniu "*.vbs"
Sukurkite scenarijų naudodami scenarijaus įrašą.
Leidžia automatizuoti scenarijaus rašymo procesą. Pradedi rašyti scenarijų. „SecureCRT“ įrašo komandas ir vėlesnį aparatinės įrangos atsaką ir parodo jums užbaigtą scenarijų.
A. Pradėkite rašyti scenarijų:
SecureCRT meniu => Scenarijus => Pradėti įrašyti scenarijų
b. Atlikite veiksmus su konsole (konfigūravimo veiksmus atlikite CLI).
V. Užbaikite rašyti scenarijų:
SecureCRT meniu => Scenarijus => Sustabdyti scenarijaus įrašymą…
Išsaugokite scenarijaus failą.
Vykdomų komandų ir išsaugoto scenarijaus pavyzdys:
Scenarijų vykdymas SecureCRT.
Sukūrus/redagavus scenarijų, iškyla logiškas klausimas: Kaip pritaikyti scenarijų?
Yra keletas būdų:
Paleidžiama rankiniu būdu iš scenarijaus meniu
Automatinis paleidimas po prisijungimo (prisijungimo scenarijus)
Automatinis prisijungimas nenaudojant scenarijaus
Suaktyvinimas rankiniu būdu naudojant mygtuką SecureCRT (mygtukas dar turi būti sukurtas ir pridėtas prie SecureCRT)
Galima automatiškai įvesti slaptažodžio vartotojo vardą, neįrašant scenarijaus, naudojant tik integruotą SecureCRT funkcionalumą. Ryšio nustatymuose „Ryšys“ => Prisijungimo veiksmai => Automatizuoti prisijungimą - reikia užpildyti keletą paketų - tai reiškia poras: „Numatomas tekstas“ + „Šiam tekstui išsiųsti simboliai“ tokių porų gali būti daug. (Pavyzdys: 1 pora laukia naudotojo vardo, antroji laukia slaptažodžio, trečioji laukia privilegijuoto režimo raginimo, ketvirtoji pora privilegijuoto režimo slaptažodžio.)
Automatinio prisijungimo prie Cisco ASA pavyzdys:
Suaktyvinimas rankiniu būdu naudojant mygtuką SecureCRT (mygtukas dar turi būti sukurtas ir pridėtas prie SecureCRT)
„SecureCRT“ mygtukui galite priskirti scenarijų. Mygtukas pridedamas prie specialiai šiam tikslui sukurto skydelio.
A. Skydelio pridėjimas prie sąsajos: SecureCRT Menu => View => Button Bar
b. Pridėkite mygtuką prie skydelio ir pridėkite scenarijų. – Dešiniuoju pelės mygtuku spustelėkite mygtukų juostą ir kontekstiniame meniu pasirinkite „Naujas mygtukas…“.
V. Dialogo lango „Žemėlapio mygtukas“ lauke „Veiksmas“ pasirinkite veiksmą (funkciją) „Vykdyti scenarijų“.
Nurodykite mygtuko antraštę. Mygtuko piktogramos spalva. Užbaikite nustatymus spustelėdami Gerai.
Pastaba:
Skydas su mygtukais yra labai naudingas funkcionalumas.
1. Kai prisijungiate prie konkrečios sesijos, pagal numatytuosius nustatymus galima nurodyti, kurį skydelį atidaryti šiame skirtuke.
2. Standartiniams veiksmams su įranga galima nustatyti iš anksto nustatytus veiksmus: rodyti versiją, rodyti run-config, išsaugoti konfigūraciją.
Prie šių mygtukų nepridėtas joks scenarijus. Tik veiksmų linija:
Nustatymas – kad perjungiant į seansą seanso nustatymuose atsidarytų reikalingas skydelis su mygtukais:
Klientui prasminga nustatyti atskirus prisijungimo scenarijus ir eiti į skydelį su dažnomis tiekėjo komandomis.
Paspaudus mygtuką Go Cisco, skydelis persijungia į Cisco mygtukų juostą.
Paprastų ir išplėstinių scenarijų naudojimo pavyzdžiai. (Praktika iš realaus gyvenimo.)
Beveik visoms progoms užtenka paprastų scenarijų. Bet kartą reikėjo šiek tiek apsunkinti scenarijų – paspartinti darbą. Dėl šios komplikacijos vartotojas tiesiog paprašė papildomų duomenų dialogo lange.
Duomenų užklausa iš vartotojo naudojant dialogo langą
Duomenų užklausos scenarijuje turėjau 2. Tai pagrindinio kompiuterio pavadinimas ir 4-asis IP adreso oktetas. Norėdami atlikti šį veiksmą – paieškojau google kaip tai padaryti ir radau oficialioje SecureCRT (vandyke) svetainėje. - funkcionalumas vadinamas greitu.
Šioje scenarijaus dalyje buvo prašoma pagrindinio kompiuterio pavadinimo ir paskutinio okteto numerių. Kadangi buvo 15 įrangos vienetų. Ir duomenys buvo pateikti lentelėje, tada nukopijavau reikšmes iš lentelės ir įklijavau į dialogo langus. Toliau scenarijus veikė savarankiškai.
FTP kopijavimas į tinklo įrangą.
Šis scenarijus paleido mano komandų langą (apvalkalą) ir nukopijavo duomenis per FTP. Pabaigoje uždarykite sesiją. Neįmanoma tam naudoti užrašų knygelės, nes kopijavimas užtrunka labai ilgai, o duomenys FTP buferyje taip ilgai nebus saugomi:
# $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()
Vartotojo vardo / slaptažodžio įvedimas naudojant scenarijų
Vieno kliento prieiga prie tinklo įrangos tiesiogiai buvo uždaryta. Į įrangą buvo galima patekti iš pradžių prisijungus prie Default Gateway, o iš jo po to prie jo prijungtos įrangos. Prisijungimui buvo naudojamas ssh klientas, integruotas į IOS / aparatinę programinę įrangą. Atitinkamai konsolėje buvo prašoma vartotojo vardo ir slaptažodžio. Naudojant toliau pateiktą scenarijų vartotojo vardas ir slaptažodis buvo įvesti automatiškai:
# $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()
Pastaba: buvo 2 scenarijai. Vienas skirtas administratoriaus paskyrai, antrasis – eSIGHT paskyrai.
Scenarijus su galimybe tiesiogiai pridėti duomenis scenarijaus vykdymo metu.
Užduotis buvo pridėti statinį maršrutą visoje tinklo įrangoje. Tačiau kiekvienos įrangos vartai į internetą buvo skirtingi (ir jie skyrėsi nuo numatytojo šliuzo). Šis scenarijus parodė maršruto lentelę, įjungė konfigūracijos režimą, neparašė komandos iki galo (vartų į internetą IP adresas) - aš pridėjau šią dalį. Kai paspaudžiau Enter, scenarijus toliau vykdė komandą.
# $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()
Šiame scenarijuje eilutėje: crt.Screen.Send("ip maršrutas 10.10.10.8 255.255.255.252 ") šliuzo IP adresas nepridėtas ir nėra vežimo grąžinimo simbolio. Scenarijus laukia kitos eilutės su simboliais „(config) #“ Šie simboliai atsirado įvedus IP adresą ir įvedus.
Išvada:
Rašant scenarijų ir jį vykdant, reikia laikytis taisyklės: Scenarijaus rašymo ir scenarijaus vykdymo laikas niekada neturėtų viršyti laiko, teoriškai sugaišta atliekant tą patį darbą rankiniu būdu (kopijuojant / įklijuojant iš bloknoto, rašant ir derinant). Ansible, Python scenarijaus rašymo ir derinimo žaidimų knyga). Tai reiškia, kad naudojant scenarijų reikėtų sutaupyti laiko, o ne gaišti laiko vienkartiniam procesų automatizavimui (t.y. kai scenarijus yra unikalus ir nebebus kartojimosi). Bet jei scenarijus yra unikalus, o automatizavimas naudojant scenarijų ir scenarijaus rašymas / derinimas užima mažiau laiko nei tai darant bet kokiu kitu būdu (įmanoma, komandų langas), tada scenarijus yra geriausias sprendimas.
Scenarijaus derinimas. Scenarijus auga palaipsniui, derinimas vyksta paleidžiant pirmąjį, antrąjį, trečiąjį įrenginį, o ketvirtajame scenarijus greičiausiai bus visiškai veikiantis.
Paleisti scenarijų (įvesdami vartotojo vardą+slaptažodį) pele paprastai yra greičiau nei nukopijuoti naudotojo vardą ir slaptažodį iš bloknoto. Tačiau saugumo požiūriu nėra saugu.
Kitas (tikras) pavyzdys naudojant scenarijų: Jūs neturite tiesioginės prieigos prie tinklo įrangos. Bet reikia sukonfigūruoti visą tinklo įrangą (įvesti ją į stebėjimo sistemą, sukonfigūruoti papildomą Vartotojo vardą/slaptažodį/snmpv3vartotojo vardą/slaptažodį). Yra prieiga, kai einate į "Core" jungiklį, iš jo atidarote SSH į kitą įrangą. Kodėl negalite naudoti Ansible. - Kadangi susiduriame su leistinų vienalaikių seansų tinklo įrangoje skaičiaus apribojimu (eilutė vty 0 4, vartotojo sąsaja vty 0 4) (kitas klausimas yra, kaip paleisti skirtingą įrangą Ansible su tuo pačiu SSH pirmuoju šuoliu).
Scenarijus sumažina laiką atliekant ilgas operacijas – pavyzdžiui, kopijuojant failus per FTP. Kai kopijavimas baigtas, scenarijus iškart pradeda veikti. Asmuo turės pamatyti kopijavimo pabaigą, tada suvokti kopijavimo pabaigą, tada įvesti atitinkamas komandas. Scenarijus tai daro objektyviai greičiau.
Scenarijai taikomi ten, kur neįmanoma naudoti masinio duomenų perdavimo įrankių: konsolė. Arba kai kurie įrangos duomenys yra unikalūs: pagrindinio kompiuterio pavadinimas, valdymo IP adresas. Arba rašant programą ir derinant tai yra sunkiau nei pridėti duomenis, gautus iš įrangos, kol scenarijus veikia. - Pavyzdys su scenarijumi, skirtu nurašyti maršrutą, kai kiekviena įranga turi savo interneto tiekėjo IP adresą. (Mano kolegos rašė tokius scenarijus – kai DMVPN šnekėjo virš 3. Reikėjo keisti DMVPN nustatymus).
Atvejo analizė: Pradinių nustatymų konfigūravimas naujame jungiklyje naudojant konsolės prievadus:
A. Įjungė konsolės laidą į įrenginį.
B. Vykdykite scenarijų
B. Laukė scenarijaus vykdymo
D. Konsolės laidą įjungė į kitą įrenginį.
E. Jei jungiklis nėra paskutinis, pereikite prie B veiksmo.
Dėl scenarijaus darbo:
pradinis slaptažodis nustatomas įrenginyje.
Įvestas vartotojo vardas
įvedamas unikalus įrenginio IP adresas.
PS operaciją teko kartoti. Kadangi numatytasis ssh nebuvo sukonfigūruotas / išjungtas. (Taip, tai mano klaida.)
Ilgo scenarijaus pavyzdys su dviem užklausomis: pagrindinio kompiuterio pavadinimas ir IP adresas. Jis buvo sukurtas įrangai iš anksto nustatyti per konsolę (9600 bodų). Taip pat paruošti įrangos prijungimą prie tinklo.
Tokių scenarijų dažniausiai nereikia, tačiau įrangos kiekis – 15 vnt. Leidžiama greitesnė sąranka. Greičiau buvo nustatyti įrangą naudojant SecureCRT Command langą.
Ssh paskyros nustatymas.
Kitas pavyzdys. Konfigūracija taip pat atliekama per konsolę.
# $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()
Apie SecureCRT:Mokama programinė įranga: nuo 99 USD (mažiausia kaina skirta tik SecureCRT vieneriems metams) Oficiali svetainė
Programinės įrangos licencija perkama vieną kartą su palaikymu (atnaujinimui), tada programinė įranga naudojama su šia licencija neribotą laiką.
Veikia Mac OS X ir Windows operacinėse sistemose.
Yra scenarijaus palaikymas (šis straipsnis)
Yra Komandų langas
Serial/Telnet/SSH1/SSH2/Shell operacinė sistema