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
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.
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:
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.
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.
Å Ä«m pogÄm nav pievienots skripts. Tikai darbÄ«bas virziens:
IestatÄ«jums - lai, pÄrejot uz sesiju, sesijas iestatÄ«jumos tiktu atvÄrts nepiecieÅ”amais panelis ar pogÄm:
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.
Nospiežot pogu Go Cisco, panelis pÄrslÄdzas uz Cisco pogu joslu.
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.
Å Ä« 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.)
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.
Å Ä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