Síťoví inženýři často čelí úkolu zkopírovat/vložit určité fragmenty z poznámkového bloku do konzole. Obvykle musíte zkopírovat několik parametrů: Uživatelské jméno/Heslo a něco dalšího. Použití skriptů umožňuje tento proces urychlit. ALE úkoly psaní skriptu a provádění skriptu by měly celkově zabrat méně času než ruční konfigurace, jinak jsou skripty k ničemu.
K čemu je tento článek? Tento článek pochází ze série Fast Start a je zaměřen na úsporu času síťových inženýrů při nastavování zařízení (jediný úkol) na více zařízeních. Využívá software SecureCRT a vestavěnou funkci spouštění skriptů. Obsah
Program SecureCRT má vestavěný mechanismus spouštění skriptů ihned po vybalení. K čemu jsou terminálové skripty?
Automatizované I/O a minimální ověřování I/O.
Zrychlete provádění rutinních úkolů – zkraťte pauzy mezi nastavováním zařízení. (De facto snížení pauz způsobených časem k provedení akcí kopírování/minulosti na stejném hardwaru, přičemž na hardware se použijí 3 nebo více fragmentů příkazů.)
Tento dokument pokrývá úkoly:
Tvorba jednoduchých skriptů.
Spouštění skriptů na SecureCRT.
Příklady použití jednoduchých a pokročilých skriptů. (Cvičení z reálného života.)
Tvorba jednoduchých skriptů.
Nejjednodušší skripty používají pouze dva příkazy, Send a WaitForString. Tato funkce stačí na 90 % (nebo více) prováděných úkolů.
Skripty mohou pracovat v Pythonu, JS, VBS (Visual Basic), Perlu atd.
# $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
Obvykle soubor s příponou "*.vbs"
Vytvořte skript pomocí položky skriptu.
Umožňuje automatizovat proces psaní skriptu. Začnete psát scénář. SecureCRT zaznamenává příkazy a následnou hardwarovou odezvu a zobrazuje hotový skript za vás.
A. Začněte psát skript:
SecureCRT Menu => Script => Spustit záznam skriptu
b. Proveďte akce s konzolou (proveďte konfigurační kroky v CLI).
PROTI. Dokončete psaní skriptu:
Nabídka SecureCRT => Skript => Zastavit záznam skriptu…
Uložte soubor skriptu.
Příklad provedených příkazů a uloženého skriptu:
Spouštění skriptů na SecureCRT.
Po vytvoření/editaci skriptu vyvstává logická otázka: Jak skript aplikovat?
Existuje několik způsobů:
Ruční spuštění z nabídky Skript
Automatické spuštění po připojení (logon skript)
Automatické přihlášení bez použití skriptu
Ruční spouštění pomocí tlačítka v SecureCRT (tlačítko musí být ještě vytvořeno a přidáno do SecureCRT)
Ruční spuštění z nabídky Skript
Nabídka SecureCRT => Skript => Spustit…
- Posledních 10 skriptů je zapamatováno a jsou k dispozici pro rychlé spuštění:
Nabídka SecureCRT => Skript => 1 "Název souboru skriptu"
Nabídka SecureCRT => Skript => 2 "Název souboru skriptu"
Nabídka SecureCRT => Skript => 3 "Název souboru skriptu"
Nabídka SecureCRT => Skript => 4 "Název souboru skriptu"
Nabídka SecureCRT => Skript => 5 "Název souboru skriptu"
Automatické spuštění po připojení (logon skript)
Nastavení skriptu automatického protokolování jsou nakonfigurována pro uloženou relaci: Připojení => Akce přihlášení => Přihlašovací skript
Automatické přihlášení bez použití skriptu
Je možné automaticky zadat uživatelské jméno a heslo bez psaní skriptu, pouze pomocí vestavěné funkcionality SecureCRT. V nastavení připojení „Připojení“ => Akce přihlášení => Automatizovat přihlášení – je potřeba vyplnit několik svazků – což znamená dvojice: „Očekávaný text“ + „Odeslané znaky do tohoto textu“ takových párů může být mnoho. (Příklad: 1. pár čeká na uživatelské jméno, druhý čeká na heslo, třetí čeká na výzvu privilegovaného režimu, čtvrtý pár na heslo privilegovaného režimu.)
Příklad automatického přihlášení na Cisco ASA:
Ruční spouštění pomocí tlačítka v SecureCRT (tlačítko musí být ještě vytvořeno a přidáno do SecureCRT)
V SecureCRT můžete tlačítku přiřadit skript. Tlačítko je přidáno do panelu speciálně vytvořeného pro tento účel.
A. Přidání panelu do rozhraní: Nabídka SecureCRT => Zobrazit => Panel tlačítek
b. Přidejte na panel tlačítko a přidejte skript. – Klepněte pravým tlačítkem myši na panel tlačítek az kontextové nabídky vyberte „Nové tlačítko…“.
PROTI. V dialogovém okně "Tlačítko mapy" v poli "Akce" vyberte akci (funkci) "Spustit skript".
Zadejte popis tlačítka. Barva ikony tlačítka. Dokončete nastavení kliknutím na OK.
Poznámka:
Panel s tlačítky je velmi užitečná funkce.
1. Při přihlášení do určité relace je možné určit, který panel se má na této kartě ve výchozím nastavení otevřít.
2. Je možné nastavit předdefinované akce pro standardní akce s vybavením: zobrazit verzi, zobrazit spuštěnou konfiguraci, uložit konfiguraci.
K těmto tlačítkům není připojen žádný skript. Pouze akční linie:
Nastavení - takže při přepnutí na relaci se v nastavení relace otevře potřebný panel s tlačítky:
Pro zákazníka má smysl nastavit jednotlivé skripty pro přihlášení a přejít na panel s častými příkazy pro dodavatele.
Když stisknete tlačítko Přejít Cisco, panel se přepne na panel tlačítek Cisco.
Příklady použití jednoduchých a pokročilých skriptů. (Cvičení z reálného života.)
Jednoduché skripty stačí téměř pro všechny příležitosti. Jednou jsem ale potřeboval trochu zkomplikovat scénář – zrychlit práci. Tato komplikace si jednoduše vyžádala od uživatele další data v dialogovém okně.
Vyžádání dat od uživatele pomocí dialogového okna
Ve skriptu požadavku na data jsem měl 2. Toto je název hostitele a 4. oktet IP adresy. K provedení této akce - vygooglil jsem, jak na to a našel jsem to na oficiálních stránkách SecureCRT (vandyke). - funkce se nazývá prompt.
Tato část skriptu požadovala název hostitele a čísla z posledního oktetu. Od bylo 15 kusů techniky. A data byla prezentována v tabulce, pak jsem zkopíroval hodnoty z tabulky a vložil je do dialogových oken. Dále scénář fungoval samostatně.
FTP kopírování do síťového zařízení.
Tento skript spustil mé příkazové okno (shell) a zkopíroval data přes FTP. Na konci relaci zavřete. K tomu není možné použít poznámkový blok, protože kopírování trvá velmi dlouho a data ve vyrovnávací paměti FTP nebudou tak dlouho uložena:
# $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()
Zadání uživatelského jména/hesla pomocí skriptu
U jednoho zákazníka byl uzavřen přímý přístup k síťovým zařízením. Do zařízení bylo možné vstoupit tak, že se nejprve připojili k Výchozí bráně a z ní pak k zařízení, které je k ní připojeno. K připojení byl použit ssh klient zabudovaný do IOS/hardwarového softwaru. V souladu s tím byly v konzole požadovány uživatelské jméno a heslo. Pomocí níže uvedeného skriptu bylo uživatelské jméno a heslo zadáno 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: Byly zde 2 skripty. Jeden pro účet správce, druhý pro účet eSIGHT.
Skript s možností přímého připojení dat během provádění skriptu.
Úkolem bylo přidat statickou trasu na všechna síťová zařízení. Ale brána k internetu na každém zařízení byla jiná (a lišila se od výchozí brány). Následující skript zobrazil směrovací tabulku, vstoupil do konfiguračního režimu, nenapsal příkaz do konce (IP adresa brány do Internetu) - tuto část jsem přidal. Poté, co jsem stiskl Enter, skript pokračoval ve vykonávání pří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 skriptu v řádku: crt.Screen.Send("ip route 10.10.10.8 255.255.255.252 ") není přidána IP adresa brány a není tam žádný znak návratu vozíku. Skript čeká na další řádek se znaky "(config) #" Tyto znaky se objevily poté, co jsem zadal ip adresu a enter.
závěr:
Při psaní skriptu a jeho provádění je třeba dodržovat pravidlo: Čas na psaní skriptu a provádění skriptu by nikdy neměl být delší než čas teoreticky strávený ručním prováděním stejné práce (kopírování / vkládání z poznámkového bloku, psaní a ladění příručka pro ansible, psaní a ladění python skriptu). To znamená, že použití skriptu by mělo ušetřit čas a neztrácet čas jednorázovou automatizací procesů (tj. když je skript jedinečný a nebude se již opakovat). Ale pokud je skript jedinečný a automatizace se skriptem a psaní / ladění skriptu zabere méně času než to udělat jiným způsobem (ansible, příkazové okno), pak je skript nejlepším řešením.
Ladění skriptu. Skript se rozrůstá postupně, ladění probíhá na záběhu na prvním, druhém, třetím zařízení a na čtvrtém bude skript s největší pravděpodobností plně funkční.
Spuštění skriptu (zadáním uživatelského jména a hesla) pomocí myši je obvykle rychlejší než kopírování uživatelského jména a hesla z poznámkového bloku. Ale z bezpečnostního hlediska to není bezpečné.
Další (skutečný) příklad při použití skriptu: Nemáte přímý přístup k síťovému zařízení. Je však potřeba nakonfigurovat všechna síťová zařízení (přenést je do monitorovacího systému, nakonfigurovat další uživatelské jméno/heslo/snmpv3username/heslo). Existuje přístup, když přejdete na přepínač Core, z něj otevřete SSH na další zařízení. Proč nemůžete použít Ansible. - Protože narážíme na limit počtu povolených simultánních relací na síťovém zařízení (řádek vty 0 4, uživatelské rozhraní vty 0 4) (další otázkou je, jak spustit různá zařízení v Ansible se stejným prvním skokem SSH).
Skript zkracuje čas při dlouhých operacích – například kopírování souborů přes FTP. Po dokončení kopírování začne skript okamžitě fungovat. Osoba bude muset vidět konec kopírování, pak si uvědomit konec kopírování a poté zadat příslušné příkazy. Scénář to dělá objektivně rychleji.
Skripty jsou použitelné tam, kde není možné použít nástroje hromadného doručování dat: Console. Nebo když jsou některá data pro zařízení jedinečná: název hostitele, adresa IP správy. Nebo při psaní programu a ladění je to obtížnější než přidávání dat přijatých ze zařízení za běhu skriptu. - Příklad se skriptem pro předepsání trasy, kdy každé zařízení má svou IP adresu poskytovatele internetu. (Moji kolegové psali takové skripty - když DMVPN mluvil přes 3. Bylo nutné změnit nastavení DMVPN).
Případová studie: Konfigurace počátečních nastavení na novém přepínači pomocí portů konzoly:
A. Připojte kabel konzoly k zařízení.
B. Spusťte skript
B. Čekal na provedení skriptu
D. Zapojte kabel konzoly do dalšího zařízení.
E. Pokud přepínač není poslední, přejděte ke kroku B.
Výsledkem práce na scénáři:
počáteční heslo je nastaveno na zařízení.
Zadáno uživatelské jméno
zadá se jedinečná IP adresa zařízení.
PS operace se musela opakovat. Protože výchozí ssh nebylo nakonfigurováno/zakázáno. (Ano, to je moje chyba.)
Příklad dlouhého skriptu se dvěma dotazy: název hostitele a adresa IP. Byl vytvořen pro přednastavení zařízení prostřednictvím konzoly (9600 baudů). A také připravit připojení zařízení k síti.
Takové skripty většinou nejsou potřeba, ale množství vybavení je 15 ks. Povoleno rychlejší nastavení. Bylo rychlejší nastavit zařízení pomocí okna příkazu SecureCRT.
Nastavení účtu pro ssh.
Další příklad. Konfigurace je také přes konzoli.
# $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:Placený software: od 99 $ (nejnižší cena je pouze pro SecureCRT na jeden rok) Oficiální internetové stránky
Softwarová licence se zakoupí jednorázově s podporou (pro aktualizaci), poté je software s touto licencí používán neomezeně dlouho.
Funguje na operačních systémech Mac OS X a Windows.
Existuje podpora skriptů (tento článek)
K dispozici je Příkazové okno
Operační systém Serial/Telnet/SSH1/SSH2/Shell