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

Úvod

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ď.

Pytón

# $language = "Python"
# $interface = "1.0"
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("Password")
  crt.Screen.Synchronous = False
main()

Zvyčajne súbor s príponou "*.py"

VBS

# $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:

Automatizácia vstupu do SecureCRT pomocou skriptov

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

Automatizácia vstupu do SecureCRT pomocou skriptov

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:

Automatizácia vstupu do SecureCRT pomocou skriptov

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.

Automatizácia vstupu do SecureCRT pomocou skriptov

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.

Automatizácia vstupu do SecureCRT pomocou skriptov
K týmto tlačidlám nie je pripojený žiadny skript. Iba akčná línia:

Automatizácia vstupu do SecureCRT pomocou skriptov
Nastavenie - takže pri prepnutí na reláciu sa v nastaveniach relácie otvorí potrebný panel s tlačidlami:

Automatizácia vstupu do SecureCRT pomocou skriptov
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.

Automatizácia vstupu do SecureCRT pomocou skriptov
Keď stlačíte tlačidlo Prejsť Cisco, panel sa prepne na panel s tlačidlami Cisco.

Automatizácia vstupu do SecureCRT pomocou skriptov

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.

	crt.Screen.WaitForString("-Vlanif200]")
	hostnamestr = crt.Dialog.Prompt("Enter hostname:", "hostname", "", False)
	ipaddressstr = crt.Dialog.Prompt("Enter ip address:", "ip", "", False)
	crt.Screen.Send("ip address 10.10.10.")
	crt.Screen.Send(ipaddressstr)
	crt.Screen.Send(" 23r")
	crt.Screen.Send("quitr")
	crt.Screen.Send("sysname ")
	crt.Screen.Send(hostnamestr)
	crt.Screen.Send("r") 

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.)

Použité zdroje.

1. O vytváraní skriptov
2. Príklady skriptov

Príloha 1: Vzorové skripty.


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.

# $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.Send("sysr")
	crt.Screen.WaitForString("]")
	crt.Screen.Send("interface Vlanif 1r")
	crt.Screen.WaitForString("Vlanif1]")
	crt.Screen.Send("undo ip addressr")
	crt.Screen.Send("shutdownr")
	crt.Screen.Send("vlan 100r")
	crt.Screen.Send(" description description1r")
	crt.Screen.Send(" name description1r")
	crt.Screen.Send("vlan 110r")
	crt.Screen.Send(" description description2r")
	crt.Screen.Send(" name description2r")
	crt.Screen.Send("vlan 120r")
	crt.Screen.Send(" description description3r")
	crt.Screen.Send(" name description3r")
	crt.Screen.Send("vlan 130r")
	crt.Screen.Send(" description description4r")
	crt.Screen.Send(" name description4r")
	crt.Screen.Send("vlan 140r")
	crt.Screen.Send(" description description5r")
	crt.Screen.Send(" name description5r")
	crt.Screen.Send("vlan 150r")
	crt.Screen.Send(" description description6r")
	crt.Screen.Send(" name description6r")
	crt.Screen.Send("vlan 160r")
	crt.Screen.Send(" description description7r")
	crt.Screen.Send(" name description7r")
	crt.Screen.Send("vlan 170r")
	crt.Screen.Send(" description description8r")
	crt.Screen.Send(" name description8r")               
	crt.Screen.Send("vlan 180r")
	crt.Screen.Send(" description description9r")
	crt.Screen.Send(" name description9r")
	crt.Screen.Send("vlan 200r")
	crt.Screen.Send(" description description10r")
	crt.Screen.Send(" name description10r")
	crt.Screen.Send("vlan 300r")
	crt.Screen.Send(" description description11r")
	crt.Screen.Send(" name description11r")
	crt.Screen.Send("quitr")
	crt.Screen.WaitForString("]")
	crt.Screen.Send("stp region-configurationr")
	crt.Screen.Send("region-name descr")
	crt.Screen.Send("active region-configurationr")
	crt.Screen.WaitForString("mst-region]")
	crt.Screen.Send("quitr")
	crt.Screen.Send("stp instance 0 priority 57344r")
	crt.Screen.WaitForString("]")
	crt.Screen.Send("interface range GigabitEthernet 0/0/1 to GigabitEthernet 0/0/42r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("description Usersr")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("port link-type hybridr")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("voice-vlan 100 enabler")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("voice-vlan legacy enabler")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("port hybrid pvid vlan 120r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("port hybrid tagged vlan 100r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("port hybrid untagged vlan 120r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("stp edged-port enabler")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("trust 8021pr")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control broadcast min-rate 1000 max-rate 1500r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control multicast min-rate 1000 max-rate 1500r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control action blockr")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control enable trapr")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("quitr")
	crt.Screen.Send("interface range GigabitEthernet 0/0/43 to GigabitEthernet 0/0/48r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("description Printersr")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("port link-type accessr")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("port default vlan 130r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("stp edged-port enabler")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("trust 8021pr")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control broadcast min-rate 1000 max-rate 1500r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control multicast min-rate 1000 max-rate 1500r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control action blockr")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control enable trapr")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("quitr")
	crt.Screen.Send("interface range XGigabitEthernet 0/0/1 to XGigabitEthernet 0/0/2r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("description uplinkr")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("port link-type trunkr")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("port trunk allow-pass vlan 100 110 120 130 140 150 160 170 180 200r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("port trunk allow-pass vlan 300r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control broadcast min-rate 1000 max-rate 1500r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control multicast min-rate 1000 max-rate 1500r")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control action blockr")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("storm-control enable trapr")
	crt.Screen.WaitForString("port-group]")
	crt.Screen.Send("quitr")
	crt.Screen.Send("ntp-service unicast-server 10.10.10.4r")
	crt.Screen.Send("ntp-service unicast-server 10.10.10.2r")
	crt.Screen.Send("ntp-service unicast-server 10.10.10.134r")
	crt.Screen.Send("ip route-static 0.0.0.0 0.0.0.0 10.10.10.254r")
	crt.Screen.Send("interface Vlanif 200r")
	crt.Screen.WaitForString("-Vlanif200]")
	crt.Screen.Send("r")
	crt.Screen.WaitForString("-Vlanif200]")
	crt.Screen.Send("r")
	crt.Screen.WaitForString("-Vlanif200]")
	crt.Screen.Send("r")
	crt.Screen.WaitForString("-Vlanif200]")
	crt.Screen.Send("r")
	crt.Screen.WaitForString("-Vlanif200]")
	crt.Screen.Send("r")
	crt.Screen.WaitForString("-Vlanif200]")
	crt.Screen.Send("r")
	crt.Screen.WaitForString("-Vlanif200]")
	crt.Screen.Send("r")
	crt.Screen.WaitForString("-Vlanif200]")
        hostnamestr = crt.Dialog.Prompt("Enter hostname:", "hostname", "", False)
        ipaddressstr = crt.Dialog.Prompt("Enter ip address:", "ip", "", False)
	crt.Screen.Send("ip address 10.10.10.")
	crt.Screen.Send(ipaddressstr)
	crt.Screen.Send(" 24r")
	crt.Screen.Send("quitr")
	crt.Screen.Send("sysname ")
	crt.Screen.Send(hostnamestr)
	crt.Screen.Send("r")
	crt.Screen.WaitForString("]")
	crt.Screen.Synchronous = False
main()

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

Zdroj: hab.com