In engineering networks, it is common for engineers to need to copy and paste certain fragments from a notepad into a console. Typically, they have to copy several parameters: Username/Password and possibly something else. The use of scripts can speed up this process. However, the time taken to write and execute the script must be less than manually configuring the settings; otherwise, scripts are useless.
Purpose of this article. This article is part of the Fast Start series and aims to save network engineers time when configuring equipment (one task) across multiple devices. It utilizes SecureCRT software and the built-in scripting functionality.
Përmbajtja
Hyrje
SecureCRT comes with a built-in mechanism for executing scripts. What scripts are needed in the terminal:
- Automated input and output, and minimal verification of input/output correctness.
- Speed up the execution of routine tasks â reducing the pauses during equipment configuration. (In effect, reducing the delays caused by the time taken for copy/paste actions on the same equipment when applying three or more command fragments to the equipment.)
This document addresses the following tasks:
- Creating simple scripts.
- Running scripts in SecureCRT.
- Examples of using simple and advanced scripts. (Practice from real life.)
Creating simple scripts.
Simple scripts use only two commands: Send and WaitForString. This functionality is sufficient for 90% (or more) of the tasks performed.
Scripts can operate in Python, JS, VBS (Visual Basic), Perl, etc.
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()
Zakonisht, një skedar me zgjatjen «*.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
Zakonisht, një skedar me zgjatjen «*.vbs»
Krijimi i një skenari duke përdorur regjistrimin e skenarit.
Lejon automatizimin e procesit të shkrimit të skenarit. Ju filloni regjistrimin e skenarit. SecureCRT regjistron komandat dhe përgjigjen e pajisjes dhe ju ofron një skenar të gatshëm.
a. Filloni regjistrimin e skenarit:
Menuja SecureCRT => Script => Start Recording Script
b. Kryeni veprime në konsolë (kryeni veprime për konfigurimin në CLI).
c. Mbyllni regjistrimin e skenarit:
Menuja SecureCRT => Script => Stop Recording ScriptâŠ
Ruani skedarin me skenarin.
Shembulli i komandave të kryera dhe skenarit të ruajtur:

Running scripts in SecureCRT.
Pas krijimit/reditimit të skenarit, lind pyetja e natyrshme: Si ta aplikoj skenarin?
Ka disa mënyra:
- Ekzekutimi manual nga menuja Script
- Automatic startup after connection (logon script)
- Automatic logon without using a script
- Manual launch using a button in SecureCRT (the button still needs to be created and added to SecureCRT)
Ekzekutimi manual nga menuja Script
Menuja SecureCRT => Script => RunâŠ
â 10 skenaret e fundit mbahen mend dhe janĂ« tĂ« disponueshĂ«m pĂ«r ekzekutim tĂ« shpejtĂ«:
Menuja SecureCRT => Script => 1 «Emri i skedarit me skenarin»
Menuja SecureCRT => Script => 2 «Emri i skedarit me skenarin»
Menuja SecureCRT => Script => 3 «Emri i skedarit me skenarin»
Menuja SecureCRT => Script => 4 «Emri i skedarit me skenarin»
Menuja SecureCRT => Script => 5 «Emri i skedarit me skenarin»
Automatic startup after connection (logon script)
Cilësimet për regjistrimin automatik të skenarit janë të konfiguruara për sesionin e ruajtur: Connection => Logon Actions => Logon script

Automatic logon without using a script
Ekziston mundĂ«sia e futjes automatikisht tĂ« emrit tĂ« pĂ«rdoruesit dhe fjalĂ«kalimit pa shkruar skenar, duke pĂ«rdorur vetĂ«m funksionalitetin e integruar tĂ« SecureCRT. NĂ« cilĂ«simet e lidhjes «Connection» => Logon Actions => Automate logon â duhet tĂ« plotĂ«soni disa çiftĂ«, tĂ« cilat pĂ«rfshijnĂ«: «Teksti i pritur» + «Simbolet e dĂ«rguara pĂ«r kĂ«tĂ« tekst», ka shumĂ« çifte tĂ« tilla. (Shembull: çifti i parĂ« pret futjen e emrit tĂ« pĂ«rdoruesit, i dyti pret futjen e fjalĂ«kalimit, i treti pret fjalĂ«kalimin e privilegjuar, e katĂ«rta fjalĂ«kalimin pĂ«r privilegjin e privilegjuar.)
Shembulli i regjistrimit automatik në Cisco ASA:

Manual launch using a button in SecureCRT (the button still needs to be created and added to SecureCRT)
NĂ« SecureCRT mund tĂ« caktoni njĂ« skenar â pĂ«r butonin. Butoni shtohet nĂ« njĂ« panel tĂ« krijuar posaçërisht pĂ«r kĂ«tĂ« qĂ«llim.
a. Shtoni panelin në ndërfaqe: Menuja SecureCRT => View => Button Bar
b. Shtoni njĂ« buton nĂ« panel dhe bashkangjitni skenarin. â Klikoni me butonin e djathtĂ« nĂ« panelin Button Bar dhe nĂ« menunĂ« kontekstuale zgjidhni opsionin «New buttonâŠÂ».
c. Në dritaren «Map Button» në fushën «Action» Zgjidhni veprimin (funksionin) «Run Script».
Specifikoni nënshkrimin e butonit. Ngjyra për ikonën e butonit. Përfundojmë konfigurimet duke klikuar Ok.

Vërejtje:
Paneli me butona është një funksionalitet shumë i dobishëm.
1. Ka mundësinë që gjatë Logon në një sesion të caktuar, të specifikoni se cili panel do të hapet fillimisht për këtë skedë.
2. Ka mundësinë për veprimet standarde me pajisjet të përcaktoni veprime të paracaktuara: shfaq show version, show running-config, ruaj konfigurimin.

Asnjë skript nuk është lidhur me këto butona. Vetëm një rresht me veprime:

Konfigurimi - që kur kaloni në sesion, të hapet paneli i nevojshëm me butona bëhet në konfigurimin e sesionit:

Për klientin ka kuptim të konfigurohen skriptet individuale për Login dhe kalimin në panelin me komandat e zakonshme për ofruesin.
![]()
Dhe kur të klikoni në butonin Go Cisco - paneli kalon në Cisco Button Bar.

Examples of using simple and advanced scripts. (Practice from real life.)
Skriptet e thjeshta janĂ« tĂ« mjaftueshme pĂ«r pothuajse çdo rast. Por njĂ« herĂ« mâu desh ta komplikoja pak skriptin - pĂ«r tĂ« shpejtuar punĂ«n. Kjo komplikim - thjesht kĂ«rkonte tĂ« dhĂ«na shtesĂ« nĂ« njĂ« dritare dialogu nga pĂ«rdoruesi.
Requesting data from the user via a dialog window
Unë në skriptin tim të pyetjeve të dhënave kisha 2. Këto ishin Hostname dhe okteti i 4-të i adresës IP. Për të kryer këtë veprim - kërkova në Google si ta bëja dhe gjeta në uebsajtin zyrtar të SecureCRT (vandyke) - funksionaliteti quhet 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")
Kjo pjesë e skriptit kërkonte Hostname dhe numrat nga okteti i fundit. Duke pasur parasysh që kishte 15 pajisje dhe të dhënat ishin të prezantuara në një tabelë, unë kopjoja vlerat nga tabela dhe i ngulisha në dritaret e dialogut. Pastaj skripti punonte në mënyrë autonome.
FTP copying to network equipment.
Ky skript ndizte një dritare komandash (shell) dhe kopjonte të dhëna përmes FTP. Pas përfundimit mbyllte sesionin. Përdorimi i bllokut të shënimeve për këtë është i pamundur, pasi kopjimi ndodhi shumë ngadalë dhe të dhënat në bufferin FTP nuk do të mbahen aq gjatë:
# $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()
Entering username/password using a script
Kish klienti kishte qasje të bllokuar direkt në pajisjet rrjet. Mund të hynte në pajisje vetëm pasi të lidhej me Portin e Paracaktuar, dhe nga aty me pajisjet e lidhura. Për lidhjen u përdor një klient ssh i integruar në IOS/software-in e pajisjes. Pra, emri i përdoruesit dhe password-i kërkoheshin në konsolë. Me skriptin më poshtë, emri i përdoruesit dhe password-i futeshin automatikisht:
# $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()
Shënim: Ka pasur 2 skripte. Një për llogarinë e administratorit, dhe një për llogarinë e eSIGHT.
Skripti me mundësinë për të shkruar direkt të dhënat gjatë ekzekutimit të skriptit.
Detyra ishte tĂ« shtohej njĂ« rrugĂ« statike nĂ« tĂ« gjitha pajisjet rrjet. Por porta nĂ« internet pĂ«r secilĂ«n pajisje ishte e ndryshme (dhe ndryshonte nga porta e paracaktuar). Skripti vijues shfaqte tabelĂ«n e rrugĂ«s, hyj nĂ« modin e konfigurimit, por nuk e plotĂ«soi nĂ« fund komandĂ«n (IP adresĂ«n e portĂ«s nĂ« internet) â kĂ«tĂ« pjesĂ« e plotĂ«soja unĂ«. Pas shtypjes sĂ« Enter, skripti vazhdonte ekzekutimin e komandĂ«s.
# $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()
Në këtë skript në rreshtin: crt.Screen.Send("ip route 10.10.10.8 255.255.255.252 ") nuk është e plotësuar IP adresa e portës dhe mungon simboli i rikthimit të karakters. Skripti pret shfaqjen e rreshtit tjetër me simbolet "(config)#". Këto simbole shfaqeshin pasi unë futja IP adresën dhe enter.
Përfundim:
Kur shkruhet dhe ekzekutohet skripti, duhet patjetër të respektohet rregulli: Koha e shkruarjes së skriptit dhe ekzekutimit të skriptit nuk duhet kurrë të jetë më e madhe se koha teorike e harxhuar për të ekzekutuar të njëjtin punë manualisht (copy/paste nga blloku, shkruarja dhe rregullimi i playbook për ansible, shkruarja dhe rregullimi i skriptit në python). Kjo do të thotë se përdorimi i skriptit duhet të kursejë kohë, jo të harxhojë kohën për një automatizim të vetëm (do të thotë, kur skripti është unik dhe nuk do të ketë më përsëritje). Por nëse skripti është unik dhe automatizimi me skript dhe shkruajtja/rregullimi i skriptit merr më pak kohë sesa ekzekutimi në çdo mënyrë tjetër (ansible, dritarja e komandave), atëherë skripti është zgjidhja më e mirë.
Rregullimi i skriptit. Skripti rritet gradualisht, rregullimi ndodh gjatë përdorimit në pajisjen e parë, të dytë, të tretë dhe për pajisjen e katërt skripti do të jetë ndoshta plotësisht funksional.
Kryqëzimi i skenarëve (me hyrje username+password) përmes mausit zakonisht ndodh më shpejt se kopjimi nga skedari Username dhe Password. Por nuk është e sigurt nga pikëpamja e sigurisë.
NjĂ« shembull tjetĂ«r (real) kur pĂ«rdorimi i skenarit: Nuk keni qasje tĂ« drejtpĂ«rdrejtĂ« nĂ« pajisjet rrjetĂ«. Por keni nevojĂ« pĂ«r tĂ« rregulluar tĂ« gjitha pajisjet rrjetĂ« (tĂ« shtoni nĂ« sistemin e monitorimit, tĂ« rregulloni Username/password/snmpv3username/password shtesĂ«). Ka qasje kur hyni nĂ« switch-in Core, nga aty hapni SSH nĂ« pajisjet e tjera. Pse nuk mund tĂ« pĂ«rdoren mjetet Ansible? â Sepse hasim nĂ« kufizimin e numrit tĂ« seancave tĂ« lejuara nĂ« pajisjet rrjetĂ« (line vty 0 4, user-interface vty 0 4) (njĂ« çështje tjetĂ«r Ă«shtĂ« se si tĂ« integrohet pajisjet e ndryshme me SSH me njĂ« hop tĂ« parĂ« me Ansible).
Skritpi redukton kohĂ«n gjatĂ« operacioneve tĂ« gjata â pĂ«r shembull, kopjimi i skedarĂ«ve pĂ«rmes FTP. Pas pĂ«rfundimit tĂ« kopjimit, skritpi fillon tĂ« funksionojĂ« menjĂ«herĂ«. Njeriu do tĂ« ketĂ« nevojĂ« tĂ« shohĂ« pĂ«rfundimin e kopjimit, pastaj tĂ« kuptojĂ« pĂ«rfundimin e kopjimit, pastaj tĂ« fusĂ« urdhrat pĂ«rkatĂ«s. Skritpi e bĂ«n kĂ«tĂ« objektivisht mĂ« shpejt.
Skripti aplikohet aty ku nuk Ă«shtĂ« e mundur tĂ« pĂ«rdoren mjete masive pĂ«r dĂ«rgimin e tĂ« dhĂ«nave: Konsola. Ose kur njĂ« pjesĂ« e tĂ« dhĂ«nave pĂ«r pajisjet Ă«shtĂ« unike: hostname, adresa IP menaxheriale. Ose kur Ă«shtĂ« mĂ« e komplikuar tĂ« shkruash njĂ« program dhe ta debugosh atĂ«, sesa tĂ« shtosh tĂ« dhĂ«nat e marra nga pajisjet gjatĂ« punĂ«s sĂ« skenarit. â NjĂ« shembull me skriptin pĂ«r pĂ«rcaktimin e rrugĂ«ve, kur nĂ« çdo pajisje, adresa IP e ofruesit tĂ« internetit Ă«shtĂ« e ndryshme. (KolegĂ«t e mi kanĂ« shkruar skripte tĂ« tilla â kur DMVPN spoke ishin mbi 300. Duhej tĂ« ndryshonin cilĂ«simet e DMVPN).
Shembuj nga praktika: Vendosja e cilësimeve fillestare në një switch të ri përmes porteve konsolë:
A. Vendosa kabllon e konsolës në pajisje.
B. E nisa skritpin
C. Prita përfundimin e skritpit
D. U transferova kabllon e konsolës në pajisjen tjetër.
E. Nëse switch-i nuk është i fundit, kthehu te pika B.
Përfundimisht, përfundimi i punës së skenarit:
- në pajisje u vendos një fjalëkalim fillestar.
- u fut Username
- u fut një adresë IP unike për pajisjen.
P.S. operacioni duhej të përsëritej. Sepse sipas Default, ssh nuk ishte i konfiguruar/ndaluar. (Po, kjo është gabimi im.)
Burimet e përdorura.
1.
2.
Appendix 1: Script examples.
Shembuj i një skripti të gjatë, me dy kërkesa: Emri i hostit dhe adresa IP. Krijuar për parakonfigurimin e pajisjeve përmes konsolës (9600 baud). Gjithashtu përgatitja e lidhjes së pajisjeve me rrjetin.
# $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()
Këta skripta zakonisht nuk janë të nevojshme, por numri i pajisjeve - 15 copë. Lehtësuan konfigurimin. Më pas, ishte më e shpejtë konfigurimi i pajisjeve përmes dritares Command në SecureCRT.
Konfigurimi i llogarisë për ssh.
Një shembull tjetër. Konfigurimi gjithashtu përmes konsolës.
# $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()
Rreth SecureCRT:Software i paguar: nga 99$ (çmimi më i ulët vetëm për SecureCRT për një vit)
Licenca për software blhet një herë, me mbështetje (për përditësime), pastaj software përdoret me këtë licencë për një kohë të pakufizuar.
Funksionon në sistemet operative Mac OS X dhe Windows.
Ka mbështetje për skriptet (ky artikull)
Ka
Serial/Telnet/SSH1/SSH2/Shell e sistemit operativ
Burimi: habr.com
