Automatiseerimine SecureCRT-s skriptide abil

VĂ”rgainseneritel on sageli ĂŒlesanne kanda teatud fragmente notepadist konsooli, tehes copy/paste. Tavaliselt tuleb kopeerida mitmeid parameetreid: kasutajanimi/parool ja midagi veel. Selle protsessi kiirusel aitab automatiseerimine skriptide kasutamine. KUID skripti kirjutamine ja skripti kĂ€itamine kokku peaks vĂ”tma vĂ€hem aega kui kĂ€sitsi seadistamine, muidu on skriptid kasutud.

Kellele on see artikkel mĂ”eldud. See artikkel kuulub kiirkĂ€ivituse tsĂŒklisse ja on suunatud vĂ”rgainsenerite aja kokkuhoiule seadmete seadistamisel (ĂŒhe ĂŒlesande) mitmes seadmes. Kasutatakse tarkvara SecureCRT ja selle sisseehitatud skriptide kĂ€itamise funktsionaalsust.

Sisu

Sissejuhatus

Programmi SecureCRT sisse on integreeritud skriptide tÀitmise mehhanism. Milleks on terminalis skripti vaja:

  • Automatiseeritud sisend ja vĂ€ljund ning minimaalne sisendi/vĂ€ljundi kehtivuse kontroll.
  • Kiirendada rutiinseid ĂŒlesandeid – vĂ€hendada pause seadmete seadistamisel. (De facto aegade vĂ€hendamine, mis on tingitud tegevuste kopeerimise/kleepimise ajast samas seadmes, kui kasutatakse kolme vĂ”i enama kĂ€skude fragmenti seadmetele.)

Antud dokumendis kĂ€sitletakse ĂŒlesandeid:

  • Lihtsaimate skriptide loomine.
  • Skriptide kĂ€ivitamine SecureCRT-s.
  • Lihtsate ja keerukate skriptide kasutamise nĂ€ited. (Praktika reaalsest elust.)

Lihtsaimate skriptide loomine.

Lihtsamad skriptid kasutavad ainult kahte kĂ€sku Send ja WaitForString. Seda funktsionaalsust piisab 90% (ja enam) tĂ€idetavatest ĂŒlesannetest.

Skripte vÔivad töötada keeltes Python, JS, VBS (Visual Basic), Perl jne.

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

Tavaliselt on faili laiend „*.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

Tavaliselt on faili laiend „*.vbs“

Skripti loomine skripti salvestamise abil.

See vÔimaldab automatiseerida skripti kirjutamise protsessi. Te alustate skripti sooritamist. SecureCRT salvestab kÀsud ja seadmest saadud vastused ning edastab teile valmis skripti.

a. Alustage skripti salvestamist:
MenĂŒĂŒ SecureCRT => Skript => Alusta skripti salvestamist
b. Tehke tegevusi konsoolis (tehke CLI sÀtete seadistamiseks tegevusi).
c. LÔpetage skripti salvestamine:
MenĂŒĂŒ SecureCRT => Skript => LĂ”peta skripti salvestamine

Salvesta skriptifail.

NÀide sooritatud kÀskudest ja salvestatud skriptist:

Automatiseerimine SecureCRT-s skriptide abil

Skriptide kÀivitamine SecureCRT-s.

PĂ€rast skripti loomist/redigeerimist tekib loomulik kĂŒsimus: Kuidas rakendada skripti?
On mitmeid viise:

  • Manuaalne kĂ€ivitamine Skripti menĂŒĂŒst
  • Automaatne kĂ€ivitamine pĂ€rast ĂŒhenduse loomist (logon script)
  • Automaatne logon ilma skripti kasutamiseta
  • KĂ€ivitamine kĂ€sitsi SecureCRT nuppude abil (nupp tuleb veel luua ja lisada SecureCRT-sse)

Manuaalne kĂ€ivitamine Skripti menĂŒĂŒst

MenĂŒĂŒ SecureCRT => Skript => KĂ€ivita

— Viimased 10 skripti salvestatakse ja on kiireks kĂ€ivitamiseks saadaval:
MenĂŒĂŒ SecureCRT => Skript => 1 „Skripti faili nimi“
MenĂŒĂŒ SecureCRT => Skript => 2 „Skripti faili nimi“
MenĂŒĂŒ SecureCRT => Skript => 3 „Skripti faili nimi“
MenĂŒĂŒ SecureCRT => Skript => 4 „Skripti faili nimi“
MenĂŒĂŒ SecureCRT => Skript => 5 „Skripti faili nimi“

Automaatne kĂ€ivitamine pĂ€rast ĂŒhenduse loomist (logon script)

Automaatse logimise skripti sÀtted konfigureeritakse salvestatud sessioonile: Connection => Logon Actions => Logon script

Automatiseerimine SecureCRT-s skriptide abil

Automaatne logon ilma skripti kasutamiseta

On vĂ”imalik automaatselt sisestada kasutajanimi ja parool ilma skripti kirjutamata, kasutades ainult SecureCRT sisseehitatud funktsionaalsust. Ühenduse seadetes "Connection" => Logon Actions => Automate logon – tuleb tĂ€ita mitu paari, mis mĂ”istavad endast "Oodatud tekst" + "Sellele tekstile saadetavad sĂŒmbolid". Selliseid paare vĂ”ib olla palju. (NĂ€ide: 1. paar ootab kasutajanime sisestamist, 2. ootab parooli sisestamist, 3. ootab privileegereĆŸiimi kutset, 4. privileegereĆŸiimi parool.)

NĂ€ide automaatsest logonist Cisco ASA-l:

Automatiseerimine SecureCRT-s skriptide abil

KÀivitamine kÀsitsi SecureCRT nuppude abil (nupp tuleb veel luua ja lisada SecureCRT-sse)

SecureCRT-is saab skripti mÀÀrata nupule. Nuput on lisatud spetsiaalselt selleks loodud töötlusse.

a. Lisame liidese paneeli: MenĂŒĂŒst SecureCRT => Vaade => Nupuriba
b. Lisame nupu paneelile ja lisame skripti. – Parema hiireklĂ”psuga klĂ”psake nupuribal ja kontekstimenĂŒĂŒs valige punkt "Uus nupp...".
c. Dialooge aknas «Map Button» valige vÀljal «Action» tegevus (function) «Run Script».
MÀÀra nuppu allkirja. Nupu ikooni vÀrv. Seadistuste lÔpetamine nupu Ok vajutamisega.

Automatiseerimine SecureCRT-s skriptide abil

MĂ€rkus:

Nuppudega paneel on vÀga kasulik funktsioon.

1. Logoni ajal on vÔimalik mÀÀrata, milline paneel vaikimisi avatakse antud vahekaardile.

2. Standardsete seadmete tegevuste jaoks on vÔimalik eelnevalt mÀÀrata toimingud: nÀita show version, show running-config, salvesta konfiguratsioon.

Automatiseerimine SecureCRT-s skriptide abil
Nende nuppudega ei ole seotud ĂŒhtegi skripti. Ainult tegevuste rida:

Automatiseerimine SecureCRT-s skriptide abil
Seadistus – et sessiooni vahetamisel avaneks vajalik nuppudega paneel, tuleb see seadistada sessiooni seadetes:

Automatiseerimine SecureCRT-s skriptide abil
Tellija jaoks on mĂ”istlik seadistada individuaalsed skriptid Logini ja ĂŒlemineku jaoks sagedaste kĂ€skude paneeli jaoks mĂŒĂŒgiesindajale.

Automatiseerimine SecureCRT-s skriptide abil
Nuppu Go Cisco vajutades vahetub paneel Cisco nuppude baariks.

Automatiseerimine SecureCRT-s skriptide abil

Lihtsate ja keerukate skriptide kasutamise nÀited. (Praktika reaalsest elust.)

Lihtsaid skripte piisab peaaegu kĂ”ikides eluolukordades. Kuid ĂŒks kord oli mul vaja skripti veidi keerulisemaks muuta – töö kiirendamiseks. See keerukus kĂŒsis lihtsalt kasutajalt dialooge tĂ€iendavaid andmeid.

Kasutaja andmete pÀrimine dialoogikasti abil

Minu andmeskripti pÀringud olid 2. Need olid Hostname ja IP-aadressi neljas oktet. Selle teostamiseks otsisin Google'ist, kuidas seda teha, ja leidsin ametlikult SecureCRT (vandyke) veebisaidilt. Funktsionaalsus kannab nime prompt.

	crt.Screen.WaitForString("-Vlanif200]")
	hostnamestr = crt.Dialog.Prompt("Sisestage hostinimi:", "hostname", "", False)
	ipaddressstr = crt.Dialog.Prompt("Sisestage IP-aadress:", "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") 

See skripti osa kĂŒsis Hostname'i ja viimase okteti numbreid. Kuna seadeid oli 15 tk ja andmed olid esitatud tabelis, kopeerisin tabelist vÀÀrtused ja kleepisin need dialoogiboksidesse. Edasi toimis skript iseseisvalt.

FTP kopeerimine vÔrgu seadmetesse.

See skript kÀivitas mul kÀsurea (shell) ja kopeeris andmed FTP kaudu. PÀrast lÔpetamist sulges seansi. Selleks ei saa kasutada Notepadi, kuna kopeerimine kestab vÀga kaua ja andmed FTP puhveres ei jÀÀ nii kaua alles:

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

Kasutajanime/parooli sisestamine skripti abil

Ühel kliendil oli juurdepÀÀs vĂ”rguseadmetele otseselt suletud. Seadmestikku pÀÀseti ligi esmalt, kui ĂŒhendati vaikimisi vĂ€rava kaudu, ja sealt edasi seadmeta ĂŒhendust luues. Ühendamiseks kasutati IOS-i / seadme tarkvarasse sisseehitatud SSH-klienti. Vastavalt kĂŒsiti kasutajanime ja parooli konsoolist. AlljĂ€rgneva skripti abil sisestati kasutajanimi ja parool automaatselt:

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

MĂ€rkus: Skripte oli kokku 2. Üks administraatori kontole, teine eSIGHTi kontole.

Skript, mis vÔimaldab andmeid jooksvalt lisada skripti kÀitamise ajal.

Ülesanne oli lisada kĂ”igile vĂ”rguseadmetele staatiline marsruut. Kuid interneti vĂ€rav igas seadmes oli omaette (ja see erines vaikimisi vĂ€ravast). AlljĂ€rgneva skripti abil vĂ€ljastati marsruutimistabel, viidi konfigureerimise reĆŸiimi, kuid kĂ€sk ei jÀÀnud lĂ”puni kirjutamata (internetivĂ€rava IP-aadress) – selle osa tĂ€itsin mina. PĂ€rast Enteri vajutamist jĂ€tkas skript kĂ€su tĂ€itmist.

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

Antud skriptis on real: crt.Screen.Send(«ip route 10.10.10.8 255.255.255.252 „) mitte ainult puudu, IP-aadressi vĂ€rava osas, vaid ka rea lĂ”petamise sĂŒmbol. Skript ootab jĂ€rgmise rea ilmumist sĂŒmbolitega «(config)#». Need sĂŒmbolid ilmusid pĂ€rast minu poolt sisestatud IP-aadressi ja enteri vajutamist.

KokkuvÔte:

Skripti kirjutamisel ja tĂ€itmisel tuleb alati jĂ€rgida reeglit: skripti kirjutamise ja tĂ€itmise aeg ei tohi kunagi ĂŒletada aega, mis teoreetiliselt kulub sama töö kĂ€sitsi tegemiseks (copy/paste tekstifailist, playbooki kirjutamine ja hÀÀlestamine Ansible'iga, Python skripti kirjutamine ja hÀÀlestamine). See tĂ€hendab, et skripti kasutamine peaks aega kokku hoidma, mitte kulutama aega ĂŒhekordse automatiseerimise protsesside peale (st kui skript on ainulaadne ja kordust ei tule). Kuid kui skript on ainulaadne ning automatiseerimine skripti ja kirjutamise/hÀÀlestamise ajakulu on vĂ€iksem kui teise meetodi (Ansible, kĂ€surea aken) tĂ€itmise aeg, on skript parim lahendus.
Skripti tÔrkeotsing. Skript areneb jÀrk-jÀrgult, tÔrkeotsing toimub esimesel, teisel ja kolmandal seadmel ning neljandaks on skript tÔenÀoliselt tÀielikult töövalmis.

Skripti kÀivitamine (kasutajanime ja parooli sisestamisega) hiirega toimub tavaliselt kiiremini kui kasutajanime ja parooli kopeerimine Notepad'ist. Kuid see pole turvalisuse seisukohalt ohutu.
Teine (reaalne) nĂ€ide skripti kasutamisest: Teil puudub otsene juurdepÀÀs vĂ”rgu seadmetele. Kuid on vajalik kĂ”ik vĂ”rgu seadmed ĂŒmber seadistada (viia jĂ€lgimisse sĂŒsteemi, kohandada tĂ€iendavat kasutajanime/parooli/snmpv3kasutajanime/parooli). Juhtimine on vĂ”imalik, kui sisse logite Core-lĂŒlitisse, kust avate SSH muudele seadmetele. Miks ei saa kasutada Ansible'i vahendeid? — Kuna jÀÀme kinni vĂ”rgu seadmete samaaegsete sessioonide piirangutesse (line vty 0 4, user-interface vty 0 4) (teine kĂŒsimus on, kuidas Ansible'sse erisuguseid seadmeid toimetada sama SSH kaudu esimeses hĂŒppes).

Skripti vÀhendab aega pikaajaliste toimingute, nÀiteks FTP-failide kopeerimise, puhul. PÀrast kopeerimise lÔppu hakkab skript kohe töötama. Inimene peab esmalt nÀgema kopeerimise lÔppu, seejÀrel teadma, et kopeerimine on lÔppenud, ja lÔpuks sisestama vastavad kÀsud. Skript teeb seda objektiivselt kiiremini.

Skripte kasutatakse seal, kus ei ole vĂ”imalik kasutada massilisi andmeedastusvahendeid: konsool. VĂ”i siis, kui osa andmeid seadmele on ainulaadne: hostname, haldus IP-aadress. VĂ”i kui programmi kirjutamine ja selle silumine on keerulisem, kui lisada seadmetelt skripti kĂ€ivitamise ajal saadud andmeid. — NĂ€ide skriptist marsruudi seadmiseks, kui igal seadmel on oma Interneti-teenuse pakkuja IP-aadress. (Minu kolleegid on kirjutanud selliseid skripte — kui DMVPN spoke'i oli ĂŒle 300. DMVPN-i seadistuste muutmine oli vajalik).

Praktiline nĂ€ide: algsete seadistuste seadmine uuel lĂŒlitil lĂ€bi konsooliportide:

A. Ühendasin konsooli kaabli seadmega.
B. KĂ€ivitasin skripti.
C. Ootasime skripti tÀitmist.
D. Ühendasin konsooli kaabli jĂ€rgmise seadmega.
D. Kui lĂŒliti ei ole viimane, liikuda punkti B.

Kokku skripti töö tulemustest:

  • seadmest on seatud algne parool.
  • sisestatud kasutajanimi
  • sisestatud seadme unikaalne IP-aadress.

P. S. operatsioon tuli korrata, kuna vaikimisi ssh ei olnud seadistatud/keelatud. (Jah, see oli minu viga.)

Kasutatud allikad.

1. Skripti loomine
2. Skripti nÀited

Rakendus 1: Skriptide nÀidised.


Pikk skript, kus on kaks pĂ€ringut: Hostname ja IP-aadress. Loodi seadmete eelhÀÀlestamiseks konsoolis (9600 bitti). Samuti seadmete ĂŒhendamiseks vĂ”rguga.

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

Sellised skriptid on tavaliselt vajalikud, kuid seadmete arv - 15 tk. Kiirendas seadistamist. Edasi oli seadmete seadistamine kiirem SecureCRT Command akna abil.

Konto seadistamine ssh jaoks.

Teine nÀide. Seadistamine samuti lÀbi konsooli.

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


SecureCRT-st:Tasuline tarkvara: alates 99 $ (kĂ”ige odavam hind ainult SecureCRTi eest ĂŒhe aasta jooksul)
Ametlik veebisait
Tarkvara litsents ostetakse ĂŒks kord, koos toega (uuendamiseks), seejĂ€rel kasutatakse tarkvara selle litsentsiga piiramatu aja jooksul.

Töötab operatsioonisĂŒsteemides Mac OS X ja Windows.

On skriptide tugi (see artikkel)
On Command Window
Serial/Telnet/SSH1/SSH2/Shell operatsioonisĂŒsteemis

Allikas: habr.com

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster