Automatizácia vstupu do SecureCRT pomocou skriptov
Sieťoví inžinieri často čelia úlohe skopírovať/prilepiť určité fragmenty z poznámkového bloku do konzoly. Zvyčajne musíte skopírovať niekoľko parametrov: Používateľské meno/Heslo a niečo iné. Použitie skriptov umožňuje urýchliť tento proces. ALE úlohy písania skriptu a spustenia skriptu by mali celkovo trvať menej času ako manuálna konfigurácia, inak sú skripty zbytočné.
Načo je tento článok? Tento článok pochádza zo série Fast Start a je zameraný na úsporu času sieťových inžinierov pri nastavovaní zariadení (jedna úloha) na viacerých zariadeniach. Používa softvér SecureCRT a vstavanú funkciu spúšťania skriptov. Obsah
Program SecureCRT má zabudovaný mechanizmus vykonávania skriptov hneď po vybalení. Na čo slúžia terminálové skripty?
Automatizované I/O a minimálne overenie I/O.
Urýchlite vykonávanie rutinných úloh – skráťte prestávky medzi nastaveniami zariadenia. (De facto zníženie prestávok spôsobených časom vykonania akcií kopírovania/minulosti na rovnakom hardvéri, pričom na hardvér sa použijú 3 alebo viac fragmentov príkazov.)
Tento dokument obsahuje tieto úlohy:
Tvorba jednoduchých skriptov.
Spúšťanie skriptov na SecureCRT.
Príklady použitia jednoduchých a pokročilých skriptov. (Cvičenie z reálneho života.)
Tvorba jednoduchých skriptov.
Najjednoduchšie skripty používajú iba dva príkazy Send a WaitForString. Táto funkcia postačuje na 90 % (alebo viac) vykonaných úloh.
Skripty môžu pracovať v jazykoch Python, JS, VBS (Visual Basic), Perl atď.
# $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
Zvyčajne súbor s príponou "*.vbs"
Vytvorte skript pomocou položky skriptu.
Umožňuje automatizovať proces písania skriptu. Začnete písať scenár. SecureCRT zaznamená príkazy a následnú hardvérovú odozvu a zobrazí hotový skript za vás.
A. Začnite písať skript:
SecureCRT Menu => Skript => Spustiť nahrávanie skriptu
b. Vykonajte akcie s konzolou (vykonajte kroky konfigurácie v CLI).
V. Dokončite písanie skriptu:
SecureCRT Menu => Skript => Zastaviť nahrávanie skriptu…
Uložte súbor skriptu.
Príklad vykonaných príkazov a uloženého skriptu:
Spúšťanie skriptov na SecureCRT.
Po vytvorení/úprave skriptu vyvstáva prirodzená otázka: Ako skript aplikovať?
Existuje niekoľko spôsobov:
Manuálne spustenie z ponuky Skript
Automatické spustenie po pripojení (prihlasovací skript)
Automatické prihlásenie bez použitia skriptu
Manuálne spustenie pomocou tlačidla v SecureCRT (tlačidlo ešte nebolo vytvorené a pridané do SecureCRT)
Manuálne spustenie z ponuky Skript
SecureCRT Menu => Skript => Spustiť…
- Posledných 10 skriptov je zapamätaných a dostupných na rýchle spustenie:
Ponuka SecureCRT => Skript => 1 "Názov súboru skriptu"
Ponuka SecureCRT => Skript => 2 "Názov súboru skriptu"
Ponuka SecureCRT => Skript => 3 "Názov súboru skriptu"
Ponuka SecureCRT => Skript => 4 "Názov súboru skriptu"
Ponuka SecureCRT => Skript => 5 "Názov súboru skriptu"
Automatické spustenie po pripojení (prihlasovací skript)
Nastavenia skriptu automatického zapisovania sú nakonfigurované pre uloženú reláciu: Pripojenie => Akcie prihlásenia => Prihlasovací skript
Automatické prihlásenie bez použitia skriptu
Je možné automaticky zadať užívateľské meno a heslo bez písania skriptu, iba pomocou vstavanej funkcionality SecureCRT. V nastaveniach pripojenia „Pripojenie“ => Akcie prihlásenia => Automatizovať prihlásenie – je potrebné vyplniť niekoľko zväzkov – čo znamená dvojice: „Očakávaný text“ + „Odoslané znaky do tohto textu“ takýchto párov môže byť veľa. (Príklad: 1. pár čaká na užívateľské meno, druhý čaká na heslo, tretí čaká na výzvu privilegovaného režimu, štvrtý pár na heslo privilegovaného režimu.)
Príklad automatického prihlásenia na Cisco ASA:
Manuálne spustenie pomocou tlačidla v SecureCRT (tlačidlo ešte nebolo vytvorené a pridané do SecureCRT)
V SecureCRT môžete priradiť skript tlačidlu. Tlačidlo sa pridá na panel špeciálne vytvorený na tento účel.
A. Pridanie panela do rozhrania: Ponuka SecureCRT => Zobraziť => Panel s tlačidlami
b. Pridajte tlačidlo na panel a pridajte skript. – Kliknite pravým tlačidlom myši na panel s tlačidlami a v kontextovej ponuke vyberte možnosť „Nové tlačidlo…“.
V. V dialógovom okne „Tlačidlo mapy“ v poli „Akcia“ vyberte akciu (funkciu) „Spustiť skript“.
Zadajte popis pre tlačidlo. Farba ikony tlačidla. Nastavenia dokončite kliknutím na tlačidlo Ok.
Poznámka:
Panel s tlačidlami je veľmi užitočná funkcia.
1. Pri prihlásení do konkrétnej relácie je možné určiť, ktorý panel sa má predvolene otvoriť na tejto karte.
2. Pre štandardné akcie s vybavením je možné nastaviť preddefinované akcie: zobraziť verziu, zobraziť spustenú konfiguráciu, uložiť konfiguráciu.
K týmto tlačidlám nie je pripojený žiadny skript. Iba akčná línia:
Nastavenie - takže pri prepnutí na reláciu sa v nastaveniach relácie otvorí potrebný panel s tlačidlami:
Pre zákazníka má zmysel nastaviť jednotlivé skripty pre Prihlásenie a prejsť na panel s častými príkazmi pre dodávateľa.
Keď stlačíte tlačidlo Prejsť Cisco, panel sa prepne na panel s tlačidlami Cisco.
Príklady použitia jednoduchých a pokročilých skriptov. (Cvičenie z reálneho života.)
Jednoduché skripty stačia takmer na všetky príležitosti. Raz som ale potreboval trochu skomplikovať scenár – urýchliť prácu. Táto komplikácia si od používateľa jednoducho vyžiadala dodatočné údaje v dialógovom okne.
Vyžiadanie údajov od používateľa pomocou dialógového okna
V skripte žiadosti o údaje som mal 2. Toto je názov hostiteľa a 4. oktet IP adresy. Ak chcete vykonať túto akciu - vygooglil som, ako to urobiť, a našiel som to na oficiálnej stránke SecureCRT (vandyke). - funkcia sa nazýva prompt.
Táto časť skriptu si vyžiadala názov hostiteľa a čísla z posledného oktetu. Od bolo 15 kusov techniky. A údaje boli prezentované v tabuľke, potom som skopíroval hodnoty z tabuľky a vložil ich do dialógových okien. Ďalej scenár fungoval samostatne.
FTP kopírovanie do sieťového zariadenia.
Tento skript spustil moje príkazové okno (shell) a skopíroval údaje cez FTP. Na konci zatvorte reláciu. Na to nie je možné použiť poznámkový blok, pretože kopírovanie trvá veľmi dlho a údaje vo vyrovnávacej pamäti FTP sa tak dlho neuložia:
# $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()
Zadanie používateľského mena/hesla pomocou skriptu
U jedného zákazníka bol uzavretý priamy prístup k sieťovým zariadeniam. Do zariadenia bolo možné vstúpiť najprv pripojením k predvolenej bráne a z nej potom k zariadeniu, ktoré je k nej pripojené. Na pripojenie bol použitý ssh klient zabudovaný do IOS/hardvérového softvéru. V súlade s tým boli v konzole požadované používateľské meno a heslo. Pomocou nižšie uvedeného skriptu boli používateľské meno a heslo zadané automaticky:
# $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()
Poznámka: Boli tam 2 skripty. Jeden pre účet správcu, druhý pre účet eSIGHT.
Skript s možnosťou priameho pripojenia údajov počas vykonávania skriptu.
Úlohou bolo pridať statickú trasu na všetky sieťové zariadenia. Ale brána k internetu na každom zariadení bola iná (a líšila sa od predvolenej brány). Nasledujúci skript zobrazil smerovaciu tabuľku, vstúpil do konfiguračného režimu, nenapísal príkaz do konca (IP adresa brány do internetu) - túto časť som pridal. Keď som stlačil Enter, skript pokračoval vo vykonávaní príkazu.
# $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 tomto skripte v riadku: crt.Screen.Send("ip route 10.10.10.8 255.255.255.252 ") nie je pridaná IP adresa brány a nie je tam žiadny znak návratu vozíka. Skript čaká na ďalší riadok so znakmi "(config) #" Tieto znaky sa objavili po zadaní ip adresy a enteru.
záver:
Pri písaní skriptu a jeho vykonávaní je potrebné dodržať pravidlo: Čas na napísanie skriptu a spustenie skriptu by nikdy nemal byť dlhší ako čas teoreticky strávený manuálnym vykonávaním rovnakej práce (kopírovanie/vkladanie z poznámkového bloku, písanie a ladenie príručka pre ansible, písanie a ladenie python skriptu). To znamená, že použitie skriptu by malo šetriť čas a nestrácať čas jednorazovou automatizáciou procesov (t. j. keď je skript jedinečný a už sa nebude opakovať). Ale ak je skript jedinečný a automatizácia so skriptom a písanie / ladenie skriptu trvá menej času ako to urobiť iným spôsobom (ansible, príkazové okno), potom je skript najlepším riešením.
Ladenie skriptu. Skript rastie postupne, ladenie prebieha na zábehu na prvom, druhom, treťom zariadení a na štvrtom už bude skript s najväčšou pravdepodobnosťou plne funkčný.
Spustenie skriptu (zadaním používateľského mena+hesla) pomocou myši je zvyčajne rýchlejšie ako kopírovanie používateľského mena a hesla z poznámkového bloku. Nie je to však bezpečné z hľadiska bezpečnosti.
Ďalší (reálny) príklad pri použití skriptu: Nemáte priamy prístup k sieťovému zariadeniu. Je však potrebné nakonfigurovať všetky sieťové zariadenia (priniesť ich do monitorovacieho systému, nakonfigurovať ďalšie používateľské meno/heslo/snmpv3username/heslo). K dispozícii je prístup, keď prejdete na prepínač Core, z ktorého otvoríte SSH do iného zariadenia. Prečo nemôžete použiť Ansible. - Pretože narážame na limit počtu povolených simultánnych relácií na sieťových zariadeniach (riadok vty 0 4, používateľské rozhranie vty 0 4) (ďalšia otázka je, ako spustiť rôzne zariadenia v Ansible s rovnakým prvým skokom SSH).
Skript skracuje čas pri dlhých operáciách – napríklad pri kopírovaní súborov cez FTP. Po dokončení kopírovania skript okamžite začne pracovať. Osoba bude musieť vidieť koniec kopírovania, potom si uvedomiť koniec kopírovania a potom zadať príslušné príkazy. Scenár to robí objektívne rýchlejšie.
Skripty sú použiteľné tam, kde nie je možné použiť nástroje na hromadné doručovanie údajov: Konzola. Alebo keď sú niektoré údaje pre zariadenie jedinečné: názov hostiteľa, adresa IP správy. Alebo pri písaní programu a ladení je to zložitejšie ako pridávanie údajov prijatých zo zariadenia počas spustenia skriptu. - Príklad so skriptom na predpisovanie trasy, keď každé zariadenie má svoju IP adresu poskytovateľa internetu. (Moji kolegovia písali takéto skripty - keď DMVPN hovorilo cez 3. Bolo potrebné zmeniť nastavenia DMVPN).
Prípadová štúdia: Konfigurácia počiatočných nastavení na novom prepínači pomocou portov konzoly:
A. Pripojte kábel konzoly k zariadeniu.
B. Spustite skript
B. Čakal na vykonanie scenára
D. Pripojte kábel konzoly k ďalšiemu zariadeniu.
E. Ak prepínač nie je posledný, prejdite na krok B.
Výsledkom práce scenára:
počiatočné heslo je nastavené na zariadení.
Zadané používateľské meno
zadá sa jedinečná IP adresa zariadenia.
PS operácia sa musela opakovať. Pretože predvolené ssh nebolo nakonfigurované/zakázané. (Áno, toto je moja chyba.)
Príklad dlhého skriptu s dvoma dopytmi: Názov hostiteľa a adresa IP. Bol vytvorený pre prednastavenie zariadenia cez konzolu (9600 baud). A tiež pripraviť pripojenie zariadení k sieti.
Takéto skripty zvyčajne nie sú potrebné, ale množstvo vybavenia je 15 ks. Povolené rýchlejšie nastavenie. Rýchlejšie bolo nastavenie zariadenia pomocou okna príkazu SecureCRT.
Nastavenie účtu pre ssh.
Ďalší príklad. Konfigurácia prebieha aj cez konzolu.
# $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:Platený softvér: od 99 USD (najnižšia cena je len pre SecureCRT na jeden rok) Oficiálne internetové stránky
Softvérová licencia sa zakúpi jednorazovo, s podporou (pre aktualizáciu), následne sa softvér s touto licenciou používa neobmedzene dlho.
Funguje na operačných systémoch Mac OS X a Windows.
Existuje podpora skriptov (tento článok)
K dispozícii je Príkazové okno
Operačný systém Serial/Telnet/SSH1/SSH2/Shell