Automatizimi i hyrjes në SecureCRT me ndihmën e skripteve

Inxhinierët e rrjetit shpeshballen me detyrën për të kopjuar dhe ngjitur përbërës të caktuar nga një editor në konsolë. Zakonisht është e nevojshme të kopjoni disa parametrat: Username/Password dhe diçka tjetër. Përdorimi i skriptve lehtëson këtë proces. POR, koha e shkruarjes së skriptit dhe ekzekutimit të tij duhet të jetë më e shkurtër se sa konfigurimi manual, ndryshe skriptet janë të pavlerë.

Pse është e nevojshme ky artikull. Ky artikull është nga cikli Fast Start dhe synon të kursejë kohë për inxhinierët e rrjetit gjatë konfigurimit të pajisjeve (një detyre) në disa pajisje. Përdoret software SecureCRT dhe funksionaliteti i integruar për ekzekutimin e skriptve.

Përmbajtja

Hyrje

Programi SecureCRT vjen me një mekanizëm për ekzekutimin e skripteve. Pse janë të nevojshme skriptet në terminal:

  • Input dhe output automatizuar, dhe kontroll minimal tĂ« saktĂ«sisĂ« sĂ« inputit/outputit.
  • Accelerimi i kryerjes sĂ« detyrave rutinore – reduktimi i pauzave gjatĂ« konfigurimit tĂ« pajisjeve. (De facto reduktimi i pauzave, tĂ« shkaktuara nga koha pĂ«r kryerjen e kopjimit/ngjitjes nĂ« tĂ« njĂ«jtat pajisje, kur ka 3 apo mĂ« shumĂ« fragmente komandash pĂ«r tu aplikuar nĂ« pajisjet.)

Në këtë dokument janë trajtuar detyrat:

  • Krijimi i skripteve mĂ« tĂ« thjeshta.
  • Ekzekutimi i skripteve nĂ« SecureCRT.
  • Shembuj tĂ« pĂ«rdorimit tĂ« skripteve tĂ« thjeshta dhe tĂ« avancuara. (Praktika nga jeta reale.)

Krijimi i skripteve më të thjeshta.

Skripte më të thjeshta përdorin vetëm dy komanda Send dhe WaitForString. Ky funksionalitet është i mjaftueshëm për 90% (apo më shumë) të detyrave që kryhen.

Skripted mund të punojnë në gjuhët Python, JS, VBS (Visual Basic), Perl etj.

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 skedari me zgjerimin "*.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 skedari me zgjerimin "*.vbs"

Krijimi i skriptit përmes regjistrimit të skriptit.

Lejon automatizimin e procesit të shkruarjes së skriptit. Ju filloni regjistrimin e skriptit. SecureCRT regjistron komandat dhe përgjigjen e mëtejshme të pajisjes dhe ju ofron një skript të gatshëm.

a. Filloni regjistrimin e skriptit:
Menu SecureCRT => Script => Start Recording Script
b. Kryeni veprimet me konsolën (kryeni detyrat e konfigurimit në CLI).
c. Përfundojeni regjistrimin e skriptit:
Menu SecureCRT => Script => Stop Recording Script

Ruani skedarin me skriptin.

Shembuj të komandave të kryera dhe skriptit të ruajtur:

Automatizimi i hyrjes në SecureCRT me ndihmën e skripteve

Ekzekutimi i skripteve në SecureCRT.

Pas krijimit/ndryshimit të skriptit, lind një pyetje e natyrshme: Si ta aplikoni skriptin?
Ka disa mënyra:

  • Ekzekutimi manual nga menu Script
  • Ekzekutimi automatik pas lidhjes (logon script)
  • Logon automatik pa pĂ«rdorimin e skriptit
  • Ekzekutimi manual pĂ«rmes njĂ« butoni nĂ« SecureCRT (butoni duhet tĂ« krijohet dhe tĂ« shtohet nĂ« SecureCRT)

Ekzekutimi manual nga menu Script

Menu SecureCRT => Script => Run

— 10 skriptet e fundit ruhen dhe janĂ« tĂ« aksesuar pĂ«r ekzekutim tĂ« shpejtĂ«:
Menu SecureCRT => Script => 1 "Emri i skedarit të skriptit"
Menu SecureCRT => Script => 2 "Emri i skedarit të skriptit"
Menu SecureCRT => Script => 3 "Emri i skedarit të skriptit"
Menu SecureCRT => Script => 4 "Emri i skedarit të skriptit"
Menu SecureCRT => Script => 5 "Emri i skedarit të skriptit"

Ekzekutimi automatik pas lidhjes (logon script)

Cilësimet për skriptin automatik të logonit konfigurohen për seancën e ruajtur: Connection => Logon Actions => Logon script

Automatizimi i hyrjes në SecureCRT me ndihmën e skripteve

Logon automatik pa përdorimin e skriptit

Ka mundĂ«sinĂ« e futur automatikisht emrin e pĂ«rdoruesit dhe fjalĂ«kalimin pa shkruar skript, duke pĂ«rdorur vetĂ«m funksionalitetin e integruar tĂ« SecureCRT. NĂ« cilĂ«simet e lidhjes "Connection" => Logon Actions => Automate logon – Ă«shtĂ« e nevojshme tĂ« plotĂ«soni disa grupe – tĂ« cilat pĂ«rfshijnĂ« çiftet: "Teksti i pritur" + "Karakteret e dĂ«rguara pĂ«r kĂ«tĂ« tekst"; ka shumĂ« prej kĂ«tyre çifteve. (Shembuj: 1-pasta pĂ«r pritjen e emrit tĂ« pĂ«rdoruesit, e dyta pritja e fjalĂ«kalimit, e treta pritja e ftesĂ«s pĂ«r modin privilegjuar, e katĂ«rta fjalĂ«kalimi i modit privilegjuar.)

Shembuj të logonit automatik në Cisco ASA:

Automatizimi i hyrjes në SecureCRT me ndihmën e skripteve

Ekzekutimi manual përmes një butoni në SecureCRT (butoni duhet të krijohet dhe të shtohet në SecureCRT)

Në SecureCRT mund të caktoni një skript për një buton. Butoni shtohet në një panel të krijuar për këtë qëllim.

a. Shtoni panelin në ndërfaqe: Menu SecureCRT => View => Button Bar
b. Shtoni butonin nĂ« panel dhe shtoni skriptin. – Klikoni me tĂ« djathtĂ«n nĂ« panelin Button Bar dhe nĂ« menu kontekstuale zgjidhni opsionin "New button
".
c. Në dritaren "Map Button" në fushën "Action" Zgjidhni veprimin (funksionin) "Run Script".
Specifikoni titullin për butonin. Ngjyra për ikonën e butonit. Përfundojeni cilësimet duke klikuar Ok.

Automatizimi i hyrjes në SecureCRT me ndihmën e skripteve

Shënim:

Paneli me butona është një funksionalitet shumë i dobishëm.

1. Ka mundësinë që gjatë Logon në një sesion të caktuar të specifikohet cila panel do të hapet si parazgjedhje për këtë skedë.

2. Ka mundësinë për veprimet standarde me pajisjet të përcaktohen veprime të paracaktuara: shfaq show version, show running-config, ruaj konfigurimin.

Automatizimi i hyrjes në SecureCRT me ndihmën e skripteve
Asnjë skenar nuk është lidhur me këto butona. Vetëm një rresht me veprime:

Automatizimi i hyrjes në SecureCRT me ndihmën e skripteve
Konfigurimi - për të siguruar që kur kaloni në sesion, të hapet paneli i nevojshëm me butona të konfigurohet në cilësimet e sesionit:

Automatizimi i hyrjes në SecureCRT me ndihmën e skripteve
Për klientin ka kuptim të konfigurojë skripte të personalizuara për Login dhe kalimin në panelin me komandat e shpeshta për furnizuesin.

Automatizimi i hyrjes në SecureCRT me ndihmën e skripteve
Kur shtypni butonin Go Cisco - paneli kalon në Cisco Button Bar.

Automatizimi i hyrjes në SecureCRT me ndihmën e skripteve

Shembuj të përdorimit të skripteve të thjeshta dhe të avancuara. (Praktika nga jeta reale.)

Skripter e thjeshtë mjaftojnë në pothuajse çdo rast. Por një herë më duhej të komplikoj pak skriptin - për të përshpejtuar punën. Ky kompliment - vetëm shpesh kërkonte të dhëna shtesë në një dritare dialogu nga përdoruesi.

Kërkesa e të dhënave nga përdoruesi nëpërmjet një dritareje dialogu

Në skriptin tim të pyetjeve të të dhënave kishte 2. Kjo ishte Hostname dhe okteti i katërt i adresës IP. Për të realizuar këtë veprim - kam gjetur se si ta bëj dhe e kam gjetur në faqen zyrtare 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 qenë se kishte 15 pajisje. Dhe të dhënat ishin të paraqitura në një tabelë, unë kopjoja vlerat nga tabela dhe i vendosja në dritaret dialogu. Pastaj skripti vazhdoi të punonte vetë.

FTP kopjimi në pajisjet rrjetësore.

Ky skript më hapte një dritare komandosh (shell) dhe kopjonte të dhëna përmes FTP. Pas përfundimit, mbyllte sesionin. Të përdorim Notepad për këtë është e pamundur, sepse kopjimi ndodh shumë ngadalë dhe të dhënat në memorien FTP nuk do të ruhen aq përgjatë:

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

Futja e username/password me anë të skriptit

Te një klient, qasja në pajisjet rrjetërore ishte e mbyllur drejtpërdrejt. Për të hyrë në pajisje mund të lidhesha fillimisht me Gateway-në e paracaktuar, dhe nga ajo pastaj në pajisjet e bashkëngjitura. Për lidhjen përdorej klienti ssh i integruar në IOS/Softwaren e pajisjeve. Prandaj emri i përdoruesit dhe fjalëkalimi kërkoheshin në konsolë. Me skriptin më poshtë, emri i përdoruesit dhe fjalëkalimi 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: Skripti kishte 2. Një për llogarinë e administratorit, e dyta për llogarinë e eSIGHT.

Skripti me mundësinë për të shkruar të dhëna drejtpërdrejt gjatë ekzekutimit të skriptit.

QĂ«llimi ishte tĂ« shtohej njĂ« ĐŒĐ°Ń€ŃˆŃ€ŃƒŃ‚ статОчДсĐșĐžĐč nĂ« tĂ« gjitha pajisjet rrjetĂ«rore. Por gateway nĂ« internet nĂ« çdo pajisje ishte i vetĂ«dijshĂ«m (dhe ai ndryshonte nga gateway-i i paracaktuar). Skripti mĂ« poshtĂ« shfaqte tabelĂ«n e ruterĂ«ve, hynte nĂ« mĂ«nyrĂ«n e konfigurimit dhe nuk e shkruante deri nĂ« fund komandĂ«n (IP adresĂ«n e gateway-it nĂ« internet) - kĂ«tĂ« pjesĂ« e shkruaja unĂ«. Pasi qĂ« unĂ« shtypja 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 „) adresa IP e gateway-it nuk Ă«shtĂ« e shkruar dhe mungon simboli i kthimit tĂ« rreshtit. Skripti pret qĂ« tĂ« shfaqet rreshti tjetĂ«r me simbolin «(config)#» KĂ«to simbole shfaqeshin pas hyrjes pĂ«r ne adresĂ«n IP dhe enter.

Përfundimi:

Gjatë shkrimit të skriptit dhe ekzekutimit, rregulli duhet të zbatohet: Koha e shkrimit të skriptit dhe ekzekutimi i skriptit nuk duhet kurrë të jetë më e madhe se koha e shpenzuar teorikisht për të realizuar të njëjtën punë manualisht (kopjo/paste nga Notepad, shkrimi dhe debugging i playbook për ansible, shkrimi dhe debugging i skriptit python). Pra, përdorimi i skriptit duhet të kursejë kohë, jo të humbasë kohë në automatizimin njëherësh të proceseve (Pra, kur skripti është unik dhe përsëritja nuk do të ndodhë më). Por nëse skripti është unik dhe automatizimi me skriptin dhe shkrimi/debugging i skriptit merr më pak kohë se realizimi me çdo metodë tjetër (ansible, dritarja e komandave), atëherë skripti është zgjidhja më e mirë.
Debugimi i skriptit. Skripti rritet gradualisht, debugging ndodh gjatë provës në pajisjen e parë, të dytë, të tretë dhe te i katërti skripti me siguri do të jetë plotësisht funksional.

Ekzekutimi i skriptit (me futjen e username+password) me ndihmën e mausit zakonisht ndodh më shpejt se kopjimi nga Notepad i Emrit të përdoruesit dhe Fjalëkalimit. Por nuk është e sigurt nga këndvështrimi i sigurisë.
Një shembull tjetër (real) kur përdorimi i skriptit: Nuk keni akses të drejtpërdrejt në pajisjet rrjetit. Por ka nevojë për konfigurimin e të gjitha pajisjeve rrjetore (të futen në sistemin e monitorimit, të konfigurohen Username/password/snmpv3username/password të tjera). Keni akses kur hyni në kalimin kryesor, nga aty hapni SSH në pajisje të tjera. Pse nuk mund të përdoren mjetet Ansible? - Sepse përballohemi me kufizimin e numrit të seancave të lejuara njëkohësisht në pajisjet rrjetore (line vty 0 4, user-interface vty 0 4) (një tjetër pyetje është se si në Ansible të futen pajisje të ndryshme me të njëjtin SSH në hopin e parë).

Skripti redukton kohën gjatë operacioneve të gjata - për shembull kopjimi i skedarëve përmes FTP. Pasi të mbarojë kopjimi, skripti fillon menjëherë të punojë. Njerëzit duhet të presin përfundimin e kopjimit, pastaj të kuptojnë se kopjimi ka përfunduar, pastaj të futin komandat përkatëse. Skripti e bën këtë objektivisht më shpejt.

Skriptet janë të aplikueshme aty ku nuk është e mundur të përdoren mjete masive për shpërndarjen e të dhënave: Konsola. Ose kur një pjesë e të dhënave për pajisjet është unike: hostname, adresa e IP drejtues. Ose kur të shkruash një program dhe ta debugosh atë është më e vështirë se sa të shtosh të dhënat e marra nga pajisja gjatë punës së skriptit. - Një shembull me skriptin për të vendosur një rrugë, kur në çdo pajisje adresa IP e ofruesit të internetit është e ndryshme. (Kolegët e mi kanë shkruar disa skripte - kur DMVPN spoke ishin më shumë se 300. Duhej të ndryshonin konfigurimet DMVPN).

Një shembull nga praktika: Caktimi i konfigurimeve fillestare në një kalim të ri përmes porteve konsol:

A. Futeni kabllon e konsolës në pajisje.
B. Nisni skriptin
C. Prisni përfundimin e skriptit
D. Shkoni në pajisjen tjetër duke e lidhur kabllon e konsolës.
E. Nëse kalimi nuk është i fundit, kaloni te pika B.

Përfundimisht, pas përfundimit të punës së skriptit:

  • nĂ« pajisje Ă«shtĂ« caktuar passwordi fillestar.
  • Ă«shtĂ« futur Username
  • Ă«shtĂ« futur adresa unike e IP tĂ« pajisjes.

P. S. operacioni u desh të përsëritej. Sepse sipas Default, ssh doli që nuk ishte i konfiguruar/ishte i ç aktivizuar. (Po, kjo është gabimi im.)

Burimet e përdorura.

1. Për krijimin e skripteve
2. Shembuj skriptesh

Shtojca 1: Shembuj të skripteve.


Një shembull i skriptit të gjatë, me dy kërkesa: Hostname dhe adresa IP. U krijua për konfigurimin paraprak të pajisjeve përmes konsolës (9600 baud). Po ashtu për përgatitjen e lidhjes së pajisjeve në rrjet.

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

Të tilla skripte zakonisht nuk janë të nevojshme, por numri i pajisjeve - 15 copë. Lejoi të përshpejtohej konfigurimi. Më pas, konfigurimi i pajisjeve ishte më i shpejtë me anë të SecureCRT Command window.

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


Për SecureCRT:Software me pagesë: nga 99$ (çmimi më i ulët vetëm për SecureCRT për një vit)
Webfaqja zyrtare
Licenca për softuer merret një herë, me mbështetje (për përditësim), pastaj softueri 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 Command Window
Serial/Telnet/SSH1/SSH2/Shell të sistemit operativ

Burimi: habr.com

Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster