Ievades automatizācija SecureCRT, izmantojot skriptus

TÄ«kla inženieri bieži saskaras ar uzdevumu kopēt/ielÄ«mēt noteiktus fragmentus no piezÄ«mju bloka uz konsoli. Parasti ir jākopē vairāki parametri: Lietotājvārds/Parole un vēl kaut kas. Skriptu izmantoÅ”ana ļauj paātrināt Å”o procesu. BET skripta rakstÄ«Å”anas un skripta izpildes uzdevumiem kopumā vajadzētu aizņemt mazāk laika nekā manuālai konfigurÄ“Å”anai, pretējā gadÄ«jumā skripti ir bezjēdzÄ«gi.

Kam domāts Å”is raksts? Å is raksts ir no sērijas Fast Start, un tā mērÄ·is ir ietaupÄ«t tÄ«kla inženieru laiku, iestatot aprÄ«kojumu (viens uzdevums) vairākās ierÄ«cēs. Izmanto SecureCRT programmatÅ«ru un iebÅ«vētu skriptu izpildes funkcionalitāti.

saturs

Ievads

Programmai SecureCRT ir iebūvēts skripta izpildes mehānisms. Kam paredzēti termināļa skripti?

  • Automatizēta I/O un minimāla I/O validācija.
  • Paātriniet ikdienas uzdevumu izpildi - samaziniet pauzes starp aprÄ«kojuma iestatÄ«jumiem. (De facto tiek samazinātas pauzes, ko izraisa laiks, lai veiktu kopÄ“Å”anas/iepriekŔējās darbÄ«bas tajā paŔā aparatÅ«rā, aparatÅ«rai piemērojot 3 vai vairāk komandu fragmentus.)

Šis dokuments aptver Ŕādus uzdevumus:

  • VienkārÅ”u skriptu izveide.
  • Skriptu palaiÅ”ana vietnē SecureCRT.
  • VienkārÅ”u un uzlabotu skriptu izmantoÅ”anas piemēri. (Prakse no reālās dzÄ«ves.)

VienkārŔu skriptu izveide.

VienkārŔākie skripti izmanto tikai divas komandas ā€” Send un WaitForString. Ar Å”o funkcionalitāti pietiek 90% (vai vairāk) veikto uzdevumu.

Skripti var darboties Python, JS, VBS (Visual Basic), Perl utt.

Pitons

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

Parasti fails ar paplaŔinājumu "*.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

Parasti fails ar paplaŔinājumu "*.vbs"

Izveidojiet skriptu, izmantojot skripta ierakstu.

Ä»auj automatizēt skripta rakstÄ«Å”anas procesu. JÅ«s sākat rakstÄ«t skriptu. SecureCRT ieraksta komandas un sekojoÅ”o aparatÅ«ras atbildi un parāda gatavo skriptu jÅ«su vietā.

A. Sāciet rakstīt skriptu:
SecureCRT izvēlne => Skripts => Sākt ierakstīt skriptu
b. Veiciet darbības ar konsoli (veiciet konfigurācijas darbības CLI).
V. Pabeidziet skripta rakstīŔanu:
SecureCRT izvēlne => Skripts => Pārtraukt skripta ierakstÄ«Å”anuā€¦
Saglabājiet skripta failu.

Izpildīto komandu un saglabātā skripta piemērs:

Ievades automatizācija SecureCRT, izmantojot skriptus

Skriptu palaiÅ”ana vietnē SecureCRT.

Pēc skripta izveides/rediģēŔanas rodas dabisks jautājums: Kā pielietot skriptu?
Ir vairāki veidi:

  • Darbojas manuāli no izvēlnes Skripts
  • Automātiska palaiÅ”ana pēc savienojuma (pieteikÅ”anās skripts)
  • Automātiska pieteikÅ”anās, neizmantojot skriptu
  • IedarbināŔana manuāli ar pogu SecureCRT (poga vēl ir jāizveido un jāpievieno SecureCRT)

Darbojas manuāli no izvēlnes Skripts

SecureCRT izvēlne => Skripts => Palaistā€¦
- Pēdējie 10 skripti tiek atcerēti un pieejami ātrai palaiÅ”anai:
SecureCRT izvēlne => Skripts => 1 "Skripta faila nosaukums"
SecureCRT izvēlne => Skripts => 2 "Skripta faila nosaukums"
SecureCRT izvēlne => Skripts => 3 "Skripta faila nosaukums"
SecureCRT izvēlne => Skripts => 4 "Skripta faila nosaukums"
SecureCRT izvēlne => Skripts => 5 "Skripta faila nosaukums"

Automātiska palaiÅ”ana pēc savienojuma (pieteikÅ”anās skripts)

Automātiskās reÄ£istrÄ“Å”anas skripta iestatÄ«jumi ir konfigurēti saglabātajai sesijai: Savienojums => PieteikÅ”anās darbÄ«bas => PieteikÅ”anās skripts

Ievades automatizācija SecureCRT, izmantojot skriptus

Automātiska pieteikŔanās, neizmantojot skriptu

Paroles lietotājvārdu iespējams ievadÄ«t automātiski, nerakstot skriptu, izmantojot tikai SecureCRT iebÅ«vēto funkcionalitāti. Savienojuma iestatÄ«jumos ā€œSavienojumsā€ => PieteikÅ”anās darbÄ«bas => Automatizēt pieteikÅ”anos - jāaizpilda vairāki komplekti, kas nozÄ«mē pārus: ā€œParedzamais tekstsā€ + ā€œNosÅ«tÄ«tās rakstzÄ«mes Å”im tekstamā€ Ŕādu pāru var bÅ«t daudz. (Piemērs: pirmais pāris gaida lietotājvārdu, otrais gaida paroli, treÅ”ais gaida priviliģētā režīma uzvedni, ceturtais pāris priviliģētā režīma parolei.)

Automātiskās pieteikÅ”anās piemērs Cisco ASA:

Ievades automatizācija SecureCRT, izmantojot skriptus

IedarbināŔana manuāli ar pogu SecureCRT (poga vēl ir jāizveido un jāpievieno SecureCRT)

Programmā SecureCRT pogai varat pieŔķirt skriptu. Poga tiek pievienota speciāli Ŕim nolūkam izveidotam panelim.

A. Paneļa pievienoŔana saskarnei: SecureCRT Menu => View => Button Bar
b. Pievienojiet panelim pogu un pievienojiet skriptu. ā€“ Ar peles labo pogu noklikŔķiniet uz pogu joslas un konteksta izvēlnē atlasiet ā€œJauna pogaā€¦ā€.
V. Dialoglodziņa ā€œKartes pogaā€ laukā ā€œDarbÄ«baā€ atlasiet darbÄ«bu (funkciju ā€œPalaist skriptuā€).
Norādiet pogas parakstu. Pogas ikonas krāsa. Pabeidziet iestatījumus, noklikŔķinot uz Labi.

Ievades automatizācija SecureCRT, izmantojot skriptus

Piezīme:

Panelis ar pogām ir ļoti noderīga funkcionalitāte.

1. Piesakoties noteiktā sesijā ir iespējams norādÄ«t, kuru paneli pēc noklusējuma atvērt Å”ai cilnei.

2. Ir iespējams iestatÄ«t iepriekÅ” noteiktas darbÄ«bas standarta darbÄ«bām ar aprÄ«kojumu: parādÄ«t parādÄ«t versiju, parādÄ«t darbÄ«bas konfigurāciju, saglabāt konfigurāciju.

Ievades automatizācija SecureCRT, izmantojot skriptus
Šīm pogām nav pievienots skripts. Tikai darbības virziens:

Ievades automatizācija SecureCRT, izmantojot skriptus
IestatÄ«jums - lai, pārejot uz sesiju, sesijas iestatÄ«jumos tiktu atvērts nepiecieÅ”amais panelis ar pogām:

Ievades automatizācija SecureCRT, izmantojot skriptus
Klientam ir jēga iestatÄ«t atseviŔķus skriptus pieteikÅ”anās funkcijai un pāriet uz paneli ar biežām pārdevēja komandām.

Ievades automatizācija SecureCRT, izmantojot skriptus
Nospiežot pogu Go Cisco, panelis pārslēdzas uz Cisco pogu joslu.

Ievades automatizācija SecureCRT, izmantojot skriptus

VienkārÅ”u un uzlabotu skriptu izmantoÅ”anas piemēri. (Prakse no reālās dzÄ«ves.)

Ar vienkārÅ”iem skriptiem pietiek gandrÄ«z visiem gadÄ«jumiem. Bet reiz vajadzēja nedaudz sarežģīt scenāriju ā€“ paātrināt darbu. Å Ä« komplikācija vienkārÅ”i pieprasÄ«ja papildu datus no lietotāja dialoglodziņā.

Datu pieprasÄ«Å”ana no lietotāja, izmantojot dialoglodziņu

Man datu pieprasÄ«juma skriptā bija 2. Å is ir saimniekdatora nosaukums un IP adreses 4. oktets. Lai veiktu Å”o darbÄ«bu - Google meklēju, kā to izdarÄ«t, un atradu to oficiālajā SecureCRT (vandyke) vietnē. - funkcionalitāti sauc par uzvedni.

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

Šī skripta daļa prasīja resursdatora nosaukumu un numurus no pēdējā okteta. Tā kā bija 15 iekārtas. Un dati tika parādīti tabulā, pēc tam es nokopēju vērtības no tabulas un ielīmēju tos dialoglodziņos. Tālāk skripts strādāja neatkarīgi.

FTP kopēŔana uz tīkla aprīkojumu.

Å is skripts palaida manu komandu logu (apvalku) un nokopēja datus, izmantojot FTP. Beigās aizveriet sesiju. Å im nolÅ«kam nav iespējams izmantot notepad, jo kopÄ“Å”ana aizņem ļoti ilgu laiku un FTP buferÄ« esoÅ”ie dati tik ilgi netiks glabāti:

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

Lietotājvārda/paroles ievadīŔana, izmantojot skriptu

Vienam klientam tika slēgta tieÅ”a piekļuve tÄ«kla iekārtām. Iekārtā bija iespējams iekļūt, vispirms pieslēdzoties Default Gateway, un no tās pēc tam ar tai pievienoto aprÄ«kojumu. Savienojuma izveidei tika izmantots IOS/aparatÅ«ras programmatÅ«rā iebÅ«vētais ssh klients. AttiecÄ«gi konsolē tika pieprasÄ«ts lietotājvārds un parole. Izmantojot tālāk norādÄ«to skriptu, lietotājvārds un parole tika ievadÄ«ti automātiski:

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

Piezīme. Bija 2 skripti. Viens administratora kontam, otrs eSIGHT kontam.

Skripts ar iespēju tieÅ”i pievienot datus skripta izpildes laikā.

Uzdevums bija pievienot statisku marÅ”rutu visās tÄ«kla iekārtās. Taču vārteja uz internetu katrā iekārtā bija atŔķirÄ«ga (un tā atŔķīrās no noklusējuma vārtejas). Nākamais skripts parādÄ«ja marÅ”rutÄ“Å”anas tabulu, iegāja konfigurācijas režīmā, neierakstÄ«ja komandu lÄ«dz galam (interneta vārtejas IP adrese) - es pievienoju Å”o daļu. Kad es nospiedu Enter, skripts turpināja izpildÄ«t komandu.

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

Å ajā skriptā rindā: crt.Screen.Send("ip route 10.10.10.8 255.255.255.252 ") vārtejas IP adrese nav pievienota un nav karieta atgrieÅ”anas rakstzÄ«mes. Skripts gaida nākamo rindiņu ar rakstzÄ«mēm "(config) #" Å Ä«s rakstzÄ«mes parādÄ«jās pēc tam, kad es ievadÄ«ju IP adresi un ievadÄ«ju.

secinājums:

Rakstot skriptu un izpildot to, ir jāievēro noteikums: Skripta rakstÄ«Å”anas un skripta izpildes laiks nekad nedrÄ«kst pārsniegt laiku, kas teorētiski tiek pavadÄ«ts viena un tā paÅ”a darba manuālai veikÅ”anai (kopÄ“Å”anai / ielÄ«mÄ“Å”anai no piezÄ«mju grāmatiņas, rakstÄ«Å”anai un atkļūdoÅ”anai rokasgrāmata ansible, python skripta rakstÄ«Å”anai un atkļūdoÅ”anai). Tas ir, skripta izmantoÅ”anai vajadzētu ietaupÄ«t laiku, nevis tērēt laiku vienreizējai procesu automatizācijai (t.i., kad skripts ir unikāls un vairs nebÅ«s atkārtoÅ”anās). Bet, ja skripts ir unikāls un automatizācija ar skriptu un skripta rakstÄ«Å”ana/atkļūdoÅ”ana aizņem mazāk laika, nekā to darot jebkurā citā veidā (iespējams, komandu logs), tad skripts ir labākais risinājums.
Skripta atkļūdoÅ”ana. Skripts attÄ«stās pakāpeniski, atkļūdoÅ”ana notiek pirmajā, otrajā, treÅ”ajā ierÄ«cē, un ceturtajā skripts, visticamāk, bÅ«s pilnÄ«bā darbspējÄ«gs.

Skripta palaiÅ”ana (ievadot lietotājvārdu+paroli) ar peli parasti ir ātrāka nekā lietotājvārda un paroles kopÄ“Å”ana no piezÄ«mju grāmatiņas. Bet tas nav droÅ”s no droŔības viedokļa.
Vēl viens (reāls) piemērs, izmantojot skriptu: Jums nav tieÅ”as piekļuves tÄ«kla aprÄ«kojumam. Bet ir nepiecieÅ”ams konfigurēt visas tÄ«kla iekārtas (ienesiet to uzraudzÄ«bas sistēmā, konfigurējiet papildu Lietotājvārds/parole/snmpv3lietotājvārds/parole). Ir piekļuve, kad jÅ«s ejat uz Core slēdzi, no tā atverat SSH uz citu aprÄ«kojumu. Kāpēc jÅ«s nevarat izmantot Ansible. - Tā kā mēs saskaramies ar ierobežojumu atļauto vienlaicÄ«go sesiju skaitam tÄ«kla iekārtās (lÄ«nija vty 0 4, lietotāja interfeiss vty 0 4) (cits jautājums ir par to, kā Ansible startēt dažādu aprÄ«kojumu ar to paÅ”u SSH pirmo lēcienu).

Skripts samazina laiku ilgu darbÄ«bu laikā, piemēram, kopējot failus, izmantojot FTP. Pēc kopÄ“Å”anas pabeigÅ”anas skripts nekavējoties sāk darboties. Personai bÅ«s jāredz kopÄ“Å”anas beigas, pēc tam jāsaprot kopÄ“Å”anas beigas, pēc tam jāievada atbilstoŔās komandas. Skripts to dara objektÄ«vi ātrāk.

Skripti ir piemērojami, ja nav iespējams izmantot masveida datu piegādes rÄ«kus: konsole. Vai arÄ« tad, ja daži iekārtas dati ir unikāli: resursdatora nosaukums, pārvaldÄ«bas IP adrese. Vai arÄ« rakstot programmu un atkļūdojot, tas ir grÅ«tāk nekā pievienot datus, kas saņemti no iekārtas, kamēr darbojas skripts. - Piemērs ar skriptu marÅ”ruta izrakstÄ«Å”anai, kad katrai iekārtai ir sava interneta pakalpojumu sniedzēja IP adrese. (Mani kolēģi rakstÄ«ja tādus skriptus - kad DMVPN runā bija virs 3. Bija jāmaina DMVPN iestatÄ«jumi).

GadÄ«juma izpēte: Jauna slēdža sākotnējo iestatÄ«jumu konfigurÄ“Å”ana, izmantojot konsoles portus:

A. Ieslēdza konsoles kabeli ierīcē.
B. Palaidiet skriptu
B. Gaidīja skripta izpildi
D. Pievienojiet konsoles kabeli nākamajai ierīcei.
E. Ja slēdzis nav pēdējais, pārejiet uz darbību B.

Scenārija darba rezultātā:

  • iekārtā ir iestatÄ«ta sākotnējā parole.
  • IevadÄ«ts lietotājvārds
  • tiek ievadÄ«ta unikālā ierÄ«ces IP adrese.

PS operācija bija jāatkārto. Tā kā noklusējuma ssh nebija konfigurēts/atspējots. (Jā, tā ir mana kļūda.)

Izmantotie avoti.

1. Par skriptu veidoŔanu
2. Skriptu piemēri

1. pielikums: Skriptu paraugi.


Gara skripta piemērs ar diviem vaicājumiem: resursdatora nosaukums un IP adrese. Tas tika izveidots aprÄ«kojuma iepriekŔējai iestatÄ«Å”anai, izmantojot konsoli (9600 bodi). Un arÄ« sagatavot iekārtu pieslēgÅ”anu tÄ«klam.

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

Šādi skripti parasti nav vajadzīgi, bet aprīkojuma apjoms ir 15 gab. Atļauta ātrāka iestatīŔana. Iekārtas iestatīŔana bija ātrāka, izmantojot SecureCRT Command logu.

Konta iestatīŔana ssh.

Vēl viens piemērs. Konfigurācija notiek arī caur konsoli.

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


Par SecureCRT:Maksas programmatūra: no 99 USD (mazākā cena ir tikai SecureCRT vienam gadam)
Oficiālā mājas lapa
ProgrammatÅ«ras licence tiek iegādāta vienreiz, ar atbalstu (atjaunināŔanai), pēc tam programmatÅ«ra tiek izmantota ar Å”o licenci neierobežotu laiku.

Darbojas operētājsistēmās Mac OS X un Windows.

Ir skriptu atbalsts (Ŕis raksts)
Ir Komandu logs
Serial/Telnet/SSH1/SSH2/Shell operētājsistēma

Avots: www.habr.com