Aŭtomatigi Eniron en SecureCRT Uzante Skriptojn

Retaj inĝenieroj ofte alfrontas la taskon kopii/alglui certajn fragmentojn de notbloko al la konzolo. Vi kutime devas kopii plurajn parametrojn: Uzantnomo/Pasvorto kaj io alia. La uzo de skriptoj permesas vin akceli ĉi tiun procezon. SED la taskoj verki la skripton kaj ekzekuti la skripton devus entute daŭri malpli da tempo ol mana agordo, alie la skriptoj estas senutilaj.

Por kio ĉi tiu artikolo? Ĉi tiu artikolo estas de la serio Fast Start kaj celas ŝpari retajn inĝenierojn tempon dum agordado de ekipaĵo (ununura tasko) sur pluraj aparatoj. Uzas SecureCRT-programaron kaj enkonstruitan skripto-ekzekutan funkcion.

Enhavo

Enkonduko

La SecureCRT-programo havas enkonstruitan skriptan ekzekutmekanismon el la skatolo. Por kio estas terminalaj skriptoj?

  • Aŭtomatigita I/O, kaj minimuma I/O-validumado.
  • Akcelu la plenumon de rutinaj taskoj - reduktante paŭzojn inter ekipaĵaj agordoj. (Fakte redukto de paŭzoj kaŭzitaj de tempo por plenumi kopion/pasintajn agojn sur la sama aparataro, kun 3 aŭ pli da komandfragmentoj por esti aplikitaj al aparataro.)

Ĉi tiu dokumento kovras la taskojn:

  • Kreado de simplaj skriptoj.
  • Rulante skriptojn sur SecureCRT.
  • Ekzemploj de uzado de simplaj kaj altnivelaj skriptoj. (Praktiku el la reala vivo.)

Kreado de simplaj skriptoj.

La plej simplaj skriptoj uzas nur du komandojn, Sendi kaj WaitForString. Ĉi tiu funkcio sufiĉas por 90% (aŭ pli) de la plenumitaj taskoj.

Skriptoj povas funkcii en Python, JS, VBS (Visual Basic), Perl ktp.

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

Kutime dosiero kun la etendo "*.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

Kutime dosiero kun la etendo "*.vbs"

Kreu skripton uzante skripton.

Permesas vin aŭtomatigi la procezon de skribado de skripto. Vi komencas verki skripton. SecureCRT registras la komandojn kaj la postan aparatan respondon kaj montras la finitan skripton por vi.

A. Komencu skribi skripton:
SecureCRT Menuo => Skripto => Komencu Registrado-Skripto
b. Faru agojn per la konzolo (faru agordajn paŝojn en la CLI).
V. Finu skribi la skripton:
SecureCRT Menuo => Skripto => Ĉesu Registrado de Skripto...
Konservu la skriptodosieron.

Ekzemplo de ekzekutitaj komandoj kaj konservita skripto:

Aŭtomatigi Eniron en SecureCRT Uzante Skriptojn

Rulante skriptojn sur SecureCRT.

Post kreado/redaktado de la skripto, aperas natura demando: Kiel apliki la skripton?
Estas pluraj manieroj:

  • Funkcias permane de la Script-menuo
  • Aŭtomata komenco post konekto (ensaluta skripto)
  • Aŭtomata ensaluto sen uzi skripton
  • Ekfunkciigo permane per butono en SecureCRT (butono ankoraŭ devas esti kreita kaj aldonita al SecureCRT)

Funkcias permane de la Script-menuo

SecureCRT Menuo => Skripto => Rulu...
- La lastaj 10 skriptoj estas memoritaj kaj disponeblaj por rapida lanĉo:
SecureCRT menu => Skripto => 1 "Skripto-dosiernomo"
SecureCRT menu => Skripto => 2 "Skripto-dosiernomo"
SecureCRT menu => Skripto => 3 "Skripto-dosiernomo"
SecureCRT menu => Skripto => 4 "Skripto-dosiernomo"
SecureCRT menu => Skripto => 5 "Skripto-dosiernomo"

Aŭtomata komenco post konekto (ensaluta skripto)

Aŭtomataj ensaluti skripto-agordoj estas agorditaj por la konservita sesio: Konekto => Ensalut-Agoj => Ensalut-skripto

Aŭtomatigi Eniron en SecureCRT Uzante Skriptojn

Aŭtomata ensaluto sen uzi skripton

Eblas aŭtomate enigi la uzantnomon de la pasvorto sen verki skripton, uzante nur la enkonstruitan funkcion de SecureCRT. En la konekto-agordoj “Konekto” => Ensaluti Agoj => Aŭtomatigi ensaluti - vi devas plenigi plurajn pakaĵojn - kio signifas la parojn: "Atendita teksto" + "Senditaj signoj al ĉi tiu teksto" povas esti multaj tiaj paroj. (Ekzemplo: unua paro atendante uzantnomon, dua atendante pasvorton, tria atendantan promeson pri privilegia reĝimo, kvara paro por pasvorton pri privilegia reĝimo.)

Ekzemplo de aŭtomata ensaluto sur Cisco ASA:

Aŭtomatigi Eniron en SecureCRT Uzante Skriptojn

Ekfunkciigo permane per butono en SecureCRT (butono ankoraŭ devas esti kreita kaj aldonita al SecureCRT)

En SecureCRT, vi povas asigni skripton al butono. La butono aldoniĝas al panelo speciale kreita por ĉi tiu celo.

A. Aldonante panelon al la interfaco: SecureCRT Menu => Vidi => Butonbreto
b. Aldonu butonon al la panelo kaj aldonu skripton. - Dekstre alklaku la Butonbreton kaj elektu "Nova butono..." el la kunteksta menuo.
V. En la dialogkesto "Mapa Butono", en la kampo "Ago", elektu la agon (funkcion) "Run Skripton".
Specifu bildotekston por la butono. La koloro por la butonikono. Finu la agordojn alklakante Ok.

Aŭtomatigi Eniron en SecureCRT Uzante Skriptojn

Notu:

La panelo kun butonoj estas tre utila funkcio.

1. Eblas, kiam Ensaluto al specifa sesio, specifi kiun panelon malfermi al ĉi tiu langeto defaŭlte.

2. Eblas agordi antaŭdifinitajn agojn por normaj agoj kun ekipaĵo: montri montri version, montri running-config, konservi agordon.

Aŭtomatigi Eniron en SecureCRT Uzante Skriptojn
Neniu skripto estas ligita al ĉi tiuj butonoj. Agadlinio nur:

Aŭtomatigi Eniron en SecureCRT Uzante Skriptojn
Agordo - tiel ke kiam ŝanĝas al sesio, la necesa panelo kun butonoj malfermiĝas en la sesiaj agordoj:

Aŭtomatigi Eniron en SecureCRT Uzante Skriptojn
Ĝi havas sencon por la kliento starigi individuajn skriptojn por Ensalutu kaj iri al la panelo kun oftaj komandoj por la vendisto.

Aŭtomatigi Eniron en SecureCRT Uzante Skriptojn
Kiam vi premas la butonon Go Cisco, la panelo ŝanĝas al la Cisco Buton Bar.

Aŭtomatigi Eniron en SecureCRT Uzante Skriptojn

Ekzemploj de uzado de simplaj kaj altnivelaj skriptoj. (Praktiku el la reala vivo.)

Simplaj skriptoj sufiĉas por preskaŭ ĉiuj okazoj. Sed iam mi bezonis iom kompliki la skripton - plirapidigi la laboron. Ĉi tiu komplikaĵo simple petis pliajn datumojn en dialogujo de la uzanto.

Petante datumojn de la uzanto per dialogujo

Mi havis 2 en la datuma peto-skripto. Ĉi tiu estas la Gastnomo kaj la 4-a okteto de la IP-adreso. Por plenumi ĉi tiun agon - mi guglos kiel fari ĝin kaj trovis ĝin en la oficiala retejo de SecureCRT (vandyke). - la funkcio nomiĝas prompto.

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

Ĉi tiu parto de la skripto petis Gastigan nomon kaj nombrojn de la lasta okteto. Ĉar estis 15 ekipaĵoj. Kaj la datumoj estis prezentitaj en tabelo, tiam mi kopiis la valorojn el la tabelo kaj algluis ĝin en la dialogujojn. Plue la manuskripto funkciis sendepende.

Kopiado de FTP al retaj ekipaĵoj.

Ĉi tiu skripto lanĉis mian komandan fenestron (ŝelo) kaj kopiis datumojn per FTP. Je la fino, fermu la sesion. Estas neeble uzi notblokon por ĉi tio, ĉar kopiado daŭras tre longan tempon kaj la datumoj en la FTP-bufro ne estos konservitaj tiom longe:

# $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()

Enigi uzantnomon/pasvorton per skripto

Ĉe unu kliento aliro al reto ekipaĵo rekte estis fermita. Eblis eniri la ekipaĵon unue ligante al la Defaŭlta Enirejo, kaj de ĝi tiam al la ekipaĵo ligita al ĝi. La ssh-kliento enkonstruita en la IOS/aparataro-programaro estis uzata por konekti. Sekve, la uzantnomo kaj pasvorto estis petitaj en la konzolo. Kun la suba skripto, la uzantnomo kaj pasvorto estis enmetitaj aŭtomate:

# $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()

Noto: Estis 2 skriptoj. Unu por la administranta konto, la dua por la eSIGHT-konto.

Skripto kun la kapablo rekte almeti datumojn dum skripto-ekzekuto.

La tasko estis aldoni senmovan itineron sur ĉiuj retaj ekipaĵoj. Sed la enirejo al Interreto sur ĉiu ekipaĵo estis malsama (kaj ĝi diferencis de la defaŭlta enirejo). La sekva skripto montris la enrutigan tabelon, eniris la agordan reĝimon, ne skribis la komandon ĝis la fino (la IP-adreso de la enirejo al Interreto) - mi aldonis ĉi tiun parton. Post kiam mi premis Enter, la skripto daŭre plenumis la komandon.

# $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()

En ĉi tiu skripto, en la linio: crt.Screen.Send("ip route 10.10.10.8 255.255.255.252") la IP-adreso de la enirejo ne estas aldonita kaj ne estas kaleŝorevena signo. La skripto atendas la sekvan linion kun la signoj "(config) #" Ĉi tiuj signoj aperis post kiam mi enigis la ip-adreson kaj eniris.

Konkludo:

Kiam oni verkas skripton kaj plenumas ĝin, oni devas sekvi la regulon: La tempo por skribi skripton kaj ekzekuti skripton neniam devus esti pli ol la tempo teorie elspezita por fari la saman laboron mane (kopii/alglui el notbloko, skribi kaj sencimigi). ludlibro por ansible, skribado kaj sencimiga python-skripto). Tio estas, la uzo de la skripto devus ŝpari tempon, kaj ne malŝpari tempon pri unufoja aŭtomatigo de procezoj (t.e., kiam la skripto estas unika kaj ne plu estos ripeto). Sed se la skripto estas unika kaj aŭtomatigo kun la skripto kaj skribi/sencimigi la skripton prenas malpli da tempo ol fari ĝin alimaniere (ansible, komandfenestro), tiam la skripto estas la plej bona solvo.
Sencimigi skripton. La skripto kreskas iom post iom, senararigado okazas ĉe la eniro ĉe la unua, dua, tria aparato, kaj ĝis la kvara la skripto plej verŝajne estos plene funkcianta.

Ruli skripton (enigo de uzantnomo+pasvorto) per la muso estas kutime pli rapida ol kopii Uzantnomon kaj Pasvorton el notbloko. Sed ne sekura de sekureca vidpunkto.
Alia (reala) ekzemplo kiam vi uzas skripton: Vi ne havas rektan aliron al retaj ekipaĵoj. Sed necesas agordi ĉiujn retajn ekipaĵojn (alportu ĝin en la monitoran sistemon, agordu plian Uzantnomon/pasvorton/snmpv3uzantnomo/pasvorton). Estas aliro kiam vi iras al la Kerna ŝaltilo, de ĝi vi malfermas SSH al aliaj ekipaĵoj. Kial vi ne povas uzi Ansible. - Ĉar ni renkontas limon de la nombro de permesitaj samtempaj sesioj sur retaj ekipaĵoj (linio vty 0 4, uzantinterfaco vty 0 4) (alia demando estas kiel komenci malsamajn ekipaĵojn en Ansible per la sama SSH unua salto).

La skripto reduktas tempon dum longaj operacioj - ekzemple kopiado de dosieroj per FTP. Post kiam kopiado estas finita, la skripto tuj ekfunkcias. Persono devos vidi la finon de kopiado, tiam realigi la finon de kopiado, tiam enigi la taŭgajn komandojn. La skripto faras ĝin objektive pli rapide.

Skriptoj estas aplikeblaj kie estas neeble uzi amasajn liverajn ilojn: Konzolo. Aŭ kiam iuj el la datumoj por la ekipaĵo estas unikaj: gastiga nomo, administrado ip-adreso. Aŭ dum verkado de programo kaj sencimigado estas pli malfacile ol aldoni datumojn ricevitajn de la ekipaĵo dum la skripto funkcias. - Ekzemplo kun skripto por preskribi itineron, kiam ĉiu ekipaĵo havas sian propran IP-adreson de la interreta provizanto. (Miaj kolegoj skribis tiajn skriptojn - kiam la DMVPN parolis estis pli ol 3. Necesis ŝanĝi la DMVPN-agordojn).

Kaza studo: Agordi Komencajn Agordojn sur Nova Ŝaltilo Uzante la Konzolajn Havenojn:

A. Ŝtopis la konzolan kablon en la aparaton.
B. Rulu la skripton
B. Atendis la plenumon de la skripto
D. Ŝtopis la konzolan kablon en la sekvan aparaton.
E. Se la ŝaltilo ne estas la lasta, iru al paŝo B.

Kiel rezulto de la laboro de la manuskripto:

  • la komenca pasvorto estas fiksita sur la ekipaĵo.
  • Uzantnomo enigita
  • la unika IP-adreso de la aparato estas enigita.

PS la operacio devis esti ripetita. Ĉar Defaŭlta ssh ne estis agordita/malŝaltita. (Jes, ĉi tio estas mia eraro.)

Uzitaj fontoj.

1. Pri kreado de skriptoj
2. Ekzemploj de manuskripto

Apendico 1: Ekzemplaj skriptoj.


Ekzemplo de longa skripto, kun du demandoj: Gastnomo kaj IP-adreso. Ĝi estis kreita por antaŭgordi ekipaĵon per la konzolo (9600 baŭdoj). Kaj ankaŭ prepari la konekton de ekipaĵo al la reto.

# $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()

Tiaj skriptoj kutime ne bezonas, sed la kvanto de ekipaĵo estas 15-komputiloj. Permesita pli rapida agordo. Estis pli rapide agordi la ekipaĵon per la fenestro de SecureCRT Command.

Agordante konton por ssh.

Alia ekzemplo. Agordo ankaŭ estas per la konzolo.

# $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()


Pri SecureCRT:Pagita programaro: de $ 99 (la plej malgranda prezo estas nur por SecureCRT dum unu jaro)
Oficiala retejo
Programaro permesilo estas aĉetita unufoje, kun subteno (por ĝisdatigo), tiam la programaro estas uzata kun ĉi tiu permesilo por senlima tempo.

Funkcias sur Mac OS X kaj Windows operaciumoj.

Estas skriptsubteno (ĉi tiu artikolo)
Ekzistas komanda fenestro
Seria/Telnet/SSH1/SSH2/Shell Operaciumo

fonto: www.habr.com