Automatizácia vstupu v SecureCRT pomocou skriptov

Sieťoví inžinieri sa často stretávajú so zadaním skopírovať/vložiť určité fragmenty z textového editora do konzoly. Zvyčajne je potrebné skopírovať niekoľko parametrov: užívateľské meno/heslo a niečo iné. Tento proces je možné urýchliť pomocou skriptov. AVŠAK celkový čas potrebný na napísanie a vykonanie skriptu by mal byť menší ako manuálne nastavenie, inak sú skripty zbytočné.

Načo je tento článok. Tento článok patrí do cyklu Rýchly štart a je zameraný na šetrenie času sieťovým inžinierom pri nastavovaní zariadení (jednej úlohy) na viacerých prístrojoch. Používa sa softvér SecureCRT a zabudovaná funkcia vykonávania skriptov.

Obsah

Úvod

Do programu SecureCRT je vstavaný mechanizmus vykonávania skriptov. Načo sú skripty v termináli:

  • Automatizovaný vstup a výstup a minimálna kontrola správnosti vstupu/výstupu.
  • Urýchlenie vykonávania rutinných úloh – zníženie prestávok medzi nastavením zariadenia. (De facto zníženie prestávok spôsobených časom na vykonávanie akcií copy/paste na rovnakom zariadení pri troch a viacerých fragmentoch príkazov na aplikáciu na zariadení.)

V tomto dokumente sa skúmajú úlohy:

  • Vytváranie najjednoduchších skriptov.
  • Spustenie skriptov v SecureCRT.
  • Príklady použitia jednoduchých a pokročilých skriptov. (Praxis z reálneho života.)

Vytváranie najjednoduchších skriptov.

Najjednoduchšie skripty používajú iba dve príkazy Send a WaitForString. Táto funkcionalita stačí na 90% (a viac) vykonávaných úloh.

Skripty môžu byť naprogramované v jazykoch Python, JS, VBS (Visual Basic), Perl a pod.

Python

# $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 má súbor príponu „*.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 má súbor príponu „*.vbs“

Vytvorenie skriptu pomocou nahrávania skriptu.

Umožňuje automatizovať proces písania skriptu. Spustíte nahrávanie skriptu. SecureCRT zaznamenáva príkazy a následné odpovede zariadenia a vytvorí pre vás hotový skript.

a. Spustiť nahrávanie skriptu:
Menu SecureCRT => Skript => Spustiť nahrávanie skriptu
b. vykonajte akcie na konzole (vykonajte akcie podľa nastavenia v CLI).
c. Ukončiť nahrávanie skriptu:
Menu SecureCRT => Skript => Zastaviť nahrávanie skriptu…
Uložiť súbor so skriptom.

Príklad vykonaných príkazov a uloženého skriptu:

Automatizácia vstupu v SecureCRT pomocou skriptov

Spustenie skriptov v SecureCRT.

Po vytvorení/úprave skriptu sa vynára zákonitá otázka: Ako aplikovať skript?
Existuje niekoľko spôsobov:

  • Manuálne spustenie z menu Skript
  • Automatické spustenie po pripojení (logon script)
  • Automatické prihlásenie bez použitia skriptu
  • Ručné spustenie pomocou tlačidla v SecureCRT (tlačidlo bude ešte potrebné vytvoriť a pridať do SecureCRT)

Manuálne spustenie z menu Skript

Menu SecureCRT => Skript => Spustiť…
— Posledných 10 skriptov sa pamätá a je dostupných na rýchle spustenie:
Menu SecureCRT => Skript => 1 „Názov súboru so skriptom“
Menu SecureCRT => Skript => 2 „Názov súboru so skriptom“
Menu SecureCRT => Skript => 3 „Názov súboru so skriptom“
Menu SecureCRT => Skript => 4 „Názov súboru so skriptom“
Menu SecureCRT => Skript => 5 „Názov súboru so skriptom“

Automatické spustenie po pripojení (logon script)

Nastavenia automatického skriptu prihlásenia sa konfiguruje pre uloženú reláciu: Pripojenie => Akcie prihlásenia => Skript prihlásenia

Automatizácia vstupu v SecureCRT pomocou skriptov

Automatické prihlásenie bez použitia skriptu

Existuje možnosť automatického zadávania používateľského mena a hesla bez písania skriptu, len pomocou zabudovanej funkcie SecureCRT. V nastaveniach pripojenia "Pripojenie" => Akcie prihlásenia => Automatizovať prihlásenie – je potrebné vyplniť niekoľko párov, ktoré predpokladajú páry: „Očakávaný text“ + „Odosielané znaky na tento text“, takýchto párov môže byť viac. (Príklad: 1. pár očakáva zadané používateľské meno, druhý očakáva zadané heslo, tretí očakáva výzvu na prístup do privilegovaného módu, štvrtý heslo pre privilegovaný mód.)

Príklad automatického prihlásenia na Cisco ASA:

Automatizácia vstupu v SecureCRT pomocou skriptov

Ručné spustenie pomocou tlačidla v SecureCRT (tlačidlo bude ešte potrebné vytvoriť a pridať do SecureCRT)

V SecureCRT môžete priradiť skript k tlačidlu. Tlačidlo sa pridáva na špeciálne vytvorenú panel.

a. Pridajte panel do rozhrania: Menu SecureCRT => Zobraziť => Panel tlačidiel
b. Pridajte tlačidlo na panel a priradte skript. – Kliknite pravým tlačidlom myši na panel Tlačidlový panel a v kontextovom menu vyberte položku „Nové tlačidlo…”.
c. V dialógovom okne „Mapovať tlačidlo“ v poli „Akcia“ vyberte akciu (funkciu) „Spustiť skript“.
Zadajte popisok k tlačidlu. Farba ikony tlačidla. Nastavenia ukončite stlačením Ok.

Automatizácia vstupu v SecureCRT pomocou skriptov

Poznámka:

Panel s tlačidlami je veľmi užitočná funkcia.

1. Pri prihlásení do určitej relácie je možné zadefinovať, ktorý panel sa má predvolene otvárať pri tejto karte.

2. Je možné pre štandardné akcie s hardvérom zadať vopred určené akcie: zobraziť show version, show running-config, uložiť konfiguráciu.

Automatizácia vstupu v SecureCRT pomocou skriptov
Na tieto tlačidlá nie je priradený žiaden skript. Iba riadok s akciami:

Automatizácia vstupu v SecureCRT pomocou skriptov
Nastavenie – aby sa po prechode na reláciu otvoril potrebný panel s tlačidlami, sa realizuje v nastaveniach relácie:

Automatizácia vstupu v SecureCRT pomocou skriptov
Pre zákazníka má zmysel nastaviť individuálne skripty pre prihlásenie a prechod na panel s častými príkazmi pre dodávateľa.

Automatizácia vstupu v SecureCRT pomocou skriptov
Po stlačení tlačidla Go Cisco sa panel prepne na Cisco Button Bar.

Automatizácia vstupu v SecureCRT pomocou skriptov

Príklady použitia jednoduchých a pokročilých skriptov. (Praxis z reálneho života.)

Jednoduché skripty stačia takmer na všetky prípady. Ale raz som potreboval trocha zložiť skript – na urýchlenie práce. Toto zloženie iba požadovalo ďalšie údaje v dialógovom okne od používateľa.

Žiadosť o údaje od užívateľa prostredníctvom dialógového okna

V mojom skripte bolo 2 požiadavky na dáta. To je Hostname a 4. oktet IP adresy. Na vykonanie tejto akcie som googlil, ako to urobiť a našiel som na oficiálnych stránkach SecureCRT (vandyke). – funkcia sa nazýva prompt.

	crt.Screen.WaitForString("-Vlanif200]")
	hostnamestr = crt.Dialog.Prompt("Zadajte hostname:", "hostname", "", False)
	ipaddressstr = crt.Dialog.Prompt("Zadajte IP adresu:", "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 požadovala Hostname a čísla z posledného oktetu. Keďže bolo 15 kusov hardvéru a údaje boli zobrazené v tabuľke, skopíroval som hodnoty z tabuľky a vložil ich do dialógových okien. Ďalej skript pracoval samostatne.

FTP kopírovanie na sieťové zariadenia.

Tento skript spúšťal príkazový riadok (shell) a kopíroval údaje cez FTP. Po dokončení uzatváral reláciu. Používať poznámkový blok na to nie je možné, pretože kopírovanie trvá veľmi dlho a údaje v FTP vyrovnávacej pamäti nebudú tak dlho uchovávané:

# $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 užívateľského mena/hesla pomocou skriptu

U jedného zákazníka bol prístup k sieťovému zariadeniu priamo uzatvorený. Na zariadenie sa dalo prihlásiť najprv pripojením k Predvolenému bráne a potom sa pripojiť k zariadeniu, ktoré k nemu bolo pripojené. Na pripojenie sa používal ssh klient zabudovaný v IOS/softvéri zariadenia. Tým pádom sa meno používateľa a heslo vyžadovali v konzole. Pomocou nasledujúceho skriptu boli meno používateľa a heslo zadávané 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: Skriptov bolo 2. Jeden pre administrátorský účet, druhý pre účet eSIGHT.

Skript s možnosťou priamo dopisovať údaje počas jeho vykonávania.

Úlohou bolo pridať na všetkých sieťových zariadeniach statickú trasu. Ale brána do internetu na každom zariadení bola vlastná (a líšila sa od predvolenej brány). Nasledujúci skript vypisoval tabuľku smerovania, prešiel do konfiguračného režimu a nedopísal do konca príkaz (IP adresa brány do internetu) – túto časť som dopisoval ja. Po tom, ako 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 dopísaná IP adresa brány a chýba symbol pre návrat na nový riadok. Skript čaká na objavenie ďalšieho riadku so symbolmi «(config)#». Tieto symboly sa objavili po tom, čo som zadal ip adresu a enter.

Záver:

Pri písaní skriptu a jeho vykonávaní sa musí nevyhnutne dodržiavať pravidlo: Čas písania skriptu a jeho vykonávania nikdy nesmie byť dlhší ako čas teoreticky vynaložený na vykonanie tej istej práce manuálne (copy/paste z textového editora, písanie a ladenie playbooku pre ansible, písanie a ladenie python skriptu). T.j. použitie skriptu musí šetriť čas a nemalo by strácať čas na jednorazovú automatizáciu procesov (t.j. keď je skript unikátny a opakovanie sa viac nebude). Ale ak je skript unikátny a automatizácia so skriptom a písanie/ladenie skriptu zaberá menej času ako vykonanie akoukoľvek inou metódou (ansible, príkazové okno), potom je skript lepšie riešenie.
Ladenie skriptu. Skript sa postupne rozrastá, ladenie prebieha na prvom, druhom, treťom zariadení a k štvrtému bude skript pravdepodobne úplne funkčný.

Spustenie skriptu (s prihlásením username+password) pomocou myši zvyčajne prebieha rýchlejšie ako kopírovanie z notesa Username a Password. Ale z pohľadu bezpečnosti to nie je bezpečné.
Ďalší (skutočný) príklad, keď sa používa skript: Nemáte priamy prístup na sieťové zariadenie. Ale je potrebné doladiť všetky sieťové zariadenia (priviesť ich do systému monitorovania, doladiť dodatočné Username/password/snmpv3username/password). Je prístup, keď sa prihlásite na Core prepínač, odtiaľ sa otvoríte SSH na iné zariadenie. Prečo nemôžeme použiť prostriedky Ansible. — Pretože narazíme na obmedzenie maximálneho počtu povolených súčasných relácií na sieťových zariadeniach (line vty 0 4, user-interface vty 0 4) (iná vec je, ako v Ansible priviesť rôzne zariadenia rovnakým SSH prvým hopsom).

Skript skracuje čas pri dlhých operáciách – napríklad kopírovanie súborov cez FTP. Po ukončení kopírovania skript okamžite začína pracovať. Človek potrebuje vidieť dokončenie kopírovania, potom pochopiť jeho dokončenie, a potom zadať príslušné príkazy. Skript to robí objektívne rýchlejšie.

Skripty sú použiteľné tam, kde nie je možné použiť prostriedky hromadného dodávania údajov: Konzola. Alebo keď sú niektoré údaje pre zariadenie jedinečné: hostname, management ip address. Alebo keď je ťažšie napísať program a ladenie k nemu, než dopísať údaje získané zo zariadenia počas práce skriptu. — Príklad so skriptom na nastavenie trasy, keď má každé zariadenie iný IP adresu poskytovateľa internetu. (Moji kolegovia písali také skripty — keď bolo DMVPN spoke viac ako 300. Bolo potrebné zmeniť nastavenia DMVPN).

Príklad z praxe: Zadanie počiatočných nastavení na novom prepínači cez konzolové porty:

A. Zapojil som konzolový kábel do zariadenia.
B. Spustil skript
C. Počkal na vykonanie skriptu
D. Prepojil konzolový kábel na ďalšie zariadenie.
E. Ak prepínač nie je posledný, prejdite k bodu B.

Celkovo na základe výsledkov práce skriptu:

  • na zariadení bol nastavený počiatočný heslo.
  • bol zadaný Username
  • bol zadaný jedinečný IP adresa zariadenia.

P. S. operáciu bolo potrebné zopakovať. Pretože podľa predvolenia bol ssh nastavený/vypnutý. (Áno, to bola moja chyba.)

Použité zdroje.

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

Príloha 1: Príklady skriptov.


Príklad dlhého skriptu s dvoma požiadavkami: Hostname a IP adresa. Bol vytvorený na prednastavenie zariadenia cez konzolu (9600 baud). A tiež na prípravu pripojenia zariadenia 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 obvykle nie sú potrebné, ale počet zariadení – 15 kusov. Umožnilo to urýchliť nastavenie. Ďalej bolo rýchlejšie nastavovať zariadenia pomocou SecureCRT Command window.

Nastavenie účtu pre ssh.

Iný príklad. Nastavenie tiež 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$ (najnižšia cena len na SecureCRT na jeden rok)
Oficiálna stránka
Licencia na softvér sa kupuje raz, s podporou (na aktualizáciu), a potom sa softvér používa s touto licenciou neobmedzený čas.

Funguje na operačných systémoch Mac OS X a Windows.

Existuje podpora skriptov (tento článok)
Existuje Command Window
Serial/Telnet/SSH1/SSH2/Shell operačného systému

Zdroj: habr.com

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster