SecureCRT-ում մուտքի ավտոմատացում՝ օգտագործելով սցենարներ
Ցանցային ինժեներները հաճախ բախվում են որոշակի դրվագներ նոթատետրից կոնսոլին պատճենելու/տեղադրելու խնդիր: Սովորաբար պետք է պատճենել մի քանի պարամետր՝ օգտանուն/գաղտնաբառ և այլ բան։ Սցենարների օգտագործումը թույլ է տալիս արագացնել այս գործընթացը: ԲԱՅՑ սկրիպտը գրելու և սկրիպտը գործարկելու առաջադրանքները պետք է ընդհանուր առմամբ ավելի քիչ ժամանակ խլեն, քան ձեռքով կազմաձևումը, հակառակ դեպքում սկրիպտներն անօգուտ են։
Ինչի՞ համար է այս հոդվածը: Այս հոդվածը Fast Start շարքից է և նպատակ ունի խնայել ցանցային ինժեներների ժամանակը մի քանի սարքերում սարքավորումներ (մեկ առաջադրանք) տեղադրելու ժամանակ: Օգտագործում է SecureCRT ծրագրակազմը և ներկառուցված սցենարի կատարման գործառույթը: Պարունակություն
SecureCRT ծրագիրն ունի ներկառուցված սկրիպտի կատարման մեխանիզմ՝ առանց տուփի: Ինչի՞ համար են նախատեսված տերմինալային սկրիպտները:
Ավտոմատացված I/O և նվազագույն I/O վավերացում:
Արագացրեք սովորական առաջադրանքների կատարումը՝ նվազեցնելով սարքավորումների կարգավորումների միջև դադարները: (Դե ֆակտո կրճատում է նույն սարքավորման վրա պատճենման/անցած գործողություններ կատարելու ժամանակի պատճառով առաջացած դադարները՝ 3 կամ ավելի հրամանի բեկորներով, որոնք պետք է կիրառվեն սարքաշարի վրա:)
Այս փաստաթուղթը ներառում է առաջադրանքները.
Պարզ սցենարների ստեղծում:
Սցենարների գործարկում SecureCRT-ում:
Պարզ և առաջադեմ սցենարներ օգտագործելու օրինակներ: (Փորձեք իրական կյանքից):
Պարզ սցենարների ստեղծում:
Ամենապարզ սկրիպտներն օգտագործում են ընդամենը երկու հրաման՝ Send և WaitForString: Այս ֆունկցիոնալությունը բավարար է կատարված առաջադրանքների 90%-ի (կամ ավելի) համար:
Սկրիպտները կարող են աշխատել Python, JS, VBS (Visual Basic), Perl և այլն:
# $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
Սովորաբար ֆայլ «*.vbs» ընդլայնմամբ
Ստեղծեք սցենար՝ օգտագործելով սցենարի մուտքը:
Թույլ է տալիս ավտոմատացնել սցենար գրելու գործընթացը: Դու սկսում ես սցենար գրել։ SecureCRT-ն ձայնագրում է հրամանները և հետագա ապարատային պատասխանը և ցուցադրում պատրաստի սցենարը ձեզ համար:
Ա. Սկսեք գրել սցենար.
SecureCRT ընտրացանկ => Սկրիպտ => Սկսել ձայնագրման սցենարը
բ. Կատարեք գործողություններ վահանակի հետ (կատարեք կազմաձևման քայլերը CLI-ում):
Վ. Ավարտեք սցենարը գրելը.
SecureCRT ընտրացանկ => Սկրիպտ => Դադարեցնել ձայնագրման սկրիպտը…
Պահպանեք սցենարի ֆայլը:
Կատարված հրամանների և պահպանված սցենարի օրինակ.
Սցենարների գործարկում SecureCRT-ում:
Սցենարը ստեղծելուց/խմբագրելուց հետո առաջանում է տրամաբանական հարց՝ ինչպե՞ս կիրառել սցենարը։
Կան մի քանի եղանակներ.
Ձեռքով գործարկվում է Script մենյուից
Ավտոմատ մեկնարկ միացումից հետո (մուտքի սկրիպտ)
Ավտոմատ մուտք առանց սկրիպտ օգտագործելու
SecureCRT-ում կոճակի ձեռքով գործարկում (կոճակը դեռ պետք է ստեղծվի և ավելացվի SecureCRT-ում)
Ձեռքով գործարկվում է Script մենյուից
SecureCRT ընտրացանկ => Սկրիպտ => Գործարկել…
- Վերջին 10 սցենարները հիշվում են և հասանելի են արագ գործարկման համար.
SecureCRT ընտրացանկ => Սկրիպտ => 1 «Սցենարի ֆայլի անունը»
SecureCRT ընտրացանկ => Սկրիպտ => 2 «Սցենարի ֆայլի անունը»
SecureCRT ընտրացանկ => Սկրիպտ => 3 «Սցենարի ֆայլի անունը»
SecureCRT ընտրացանկ => Սկրիպտ => 4 «Սցենարի ֆայլի անունը»
SecureCRT ընտրացանկ => Սկրիպտ => 5 «Սցենարի ֆայլի անունը»
Ավտոմատ մեկնարկ միացումից հետո (մուտքի սկրիպտ)
Ավտոմատ մուտքագրման սկրիպտի կարգավորումները կազմաձևված են պահպանված աշխատաշրջանի համար՝ Միացում => Մուտքի Գործողություններ => Մուտքի սկրիպտ
Ավտոմատ մուտք առանց սկրիպտ օգտագործելու
Հնարավոր է ավտոմատ կերպով մուտքագրել գաղտնաբառի օգտանունը՝ առանց սկրիպտ գրելու՝ օգտագործելով միայն SecureCRT-ի ներկառուցված ֆունկցիոնալությունը։ Կապի կարգավորումներում «Միացում» => Մուտք Գործողություններ => Ավտոմատ մուտքագրում - դուք պետք է լրացնեք մի քանի փաթեթներ, որոնք նշանակում են զույգեր. «Սպասվող տեքստ» + «Ուղարկված նիշերը այս տեքստին» կարող են լինել շատ նման զույգեր: (Օրինակ. 1-ին զույգը սպասում է օգտանունին, երկրորդը սպասում է գաղտնաբառին, երրորդը սպասում է արտոնյալ ռեժիմի հուշմանը, չորրորդ զույգը արտոնյալ ռեժիմի գաղտնաբառի համար):
Cisco ASA-ում ավտոմատ մուտքի օրինակ.
SecureCRT-ում կոճակի ձեռքով գործարկում (կոճակը դեռ պետք է ստեղծվի և ավելացվի SecureCRT-ում)
SecureCRT-ում դուք կարող եք սկրիպտ վերագրել կոճակին: Կոճակը ավելացվում է հատուկ այդ նպատակով ստեղծված վահանակին:
Ա. Վահանակի ավելացում ինտերֆեյսին. SecureCRT Մենյու => Դիտել => Կոճակի բար
բ. Ավելացրեք կոճակ վահանակին և ավելացրեք սցենար: – Աջ սեղմեք կոճակների գծի վրա և համատեքստի ընտրացանկից ընտրեք «Նոր կոճակ…»:
Վ. «Քարտեզի կոճակ» երկխոսության վանդակում «Գործողություն» դաշտում ընտրեք «Գործարկել սցենար» գործողությունը (գործառույթը):
Նշեք կոճակի վերնագիր: Կոճակի պատկերակի գույնը: Ավարտեք կարգավորումները՝ սեղմելով Ok:
Նշում:
Կոճակներով վահանակը շատ օգտակար գործառույթ է:
1. Հնարավոր է, երբ մուտք գործեք կոնկրետ նստաշրջան, նշեք, թե որ վահանակը բացել այս ներդիրում լռելյայնորեն:
2. Սարքավորումներով ստանդարտ գործողությունների համար հնարավոր է նախապես սահմանված գործողություններ սահմանել՝ ցույց տալ ցուցադրման տարբերակը, ցուցադրել run-config, պահպանել կոնֆիգուրացիան:
Ոչ մի սցենար կցված չէ այս կոճակներին: Միայն գործողության գիծ.
Կարգավորում - այնպես, որ նստաշրջանին անցնելիս նիստի կարգավորումներում բացվի կոճակներով անհրաժեշտ վահանակը.
Հաճախորդի համար իմաստ ունի մուտք գործել անհատական սկրիպտներ և գնալ վաճառողի համար հաճախակի հրամաններով վահանակ:
Երբ սեղմում եք Go Cisco կոճակը, վահանակը անցնում է Cisco կոճակների գծին:
Պարզ և առաջադեմ սցենարներ օգտագործելու օրինակներ: (Փորձեք իրական կյանքից):
Պարզ սցենարները բավական են գրեթե բոլոր առիթների համար։ Բայց մի անգամ ինձ անհրաժեշտ էր մի փոքր բարդացնել սցենարը՝ արագացնել աշխատանքը։ Այս բարդությունը պարզապես օգտագործողից պահանջել է լրացուցիչ տվյալներ երկխոսության վանդակում:
Օգտագործողից տվյալների հայցում երկխոսության տուփի միջոցով
Տվյալների հարցման սկրիպտում ունեի 2. Սա Hostname-ն է և IP հասցեի 4-րդ օկտետը։ Այս գործողությունը կատարելու համար ես google-ում փնտրեցի, թե ինչպես դա անել և գտա այն SecureCRT-ի պաշտոնական կայքում (vandyke): - ֆունկցիոնալությունը կոչվում է արագ:
Սցենարի այս մասում պահանջվում էր Hostname և թվեր վերջին օկտետից: Քանի որ կար 15 միավոր տեխնիկա։ Եվ տվյալները ներկայացվեցին աղյուսակում, այնուհետև ես պատճենեցի արժեքները աղյուսակից և տեղադրեցի այն երկխոսության տուփերում: Այնուհետև սցենարն ինքնուրույն է աշխատել։
FTP պատճենում ցանցային սարքավորումներին:
Այս սցենարը գործարկեց իմ հրամանի պատուհանը (կեղևը) և պատճենեց տվյալները FTP-ի միջոցով: Վերջում փակեք նիստը։ Դրա համար նոթատետր օգտագործելն անհնար է, քանի որ պատճենումը շատ երկար է տևում, և FTP բուֆերում տվյալները այդքան երկար չեն պահվի.
# $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()
Մուտքագրեք օգտվողի անունը/գաղտնաբառ՝ օգտագործելով սցենար
Մեկ հաճախորդի մոտ ուղղակիորեն փակվել է ցանցային սարքավորումների մուտքը: Սարքավորումը հնարավոր եղավ մուտք գործել՝ նախ միանալով Default Gateway-ին, իսկ դրանից հետո՝ դրան միացված սարքավորումներին։ Միացման համար օգտագործվել է IOS/ապարատային ծրագրաշարի մեջ ներկառուցված ssh հաճախորդը: Համապատասխանաբար, օգտանունը և գաղտնաբառը պահանջվել են վահանակում: Ստորև բերված սկրիպտի միջոցով օգտանունը և գաղտնաբառը ավտոմատ կերպով մուտքագրվել են.
# $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()
Նշում․ կար 2 սկրիպտ, մեկը՝ ադմինիստրատորի, երկրորդը՝ eSIGHT հաշվի համար։
Սկրիպտ՝ սցենարի կատարման ընթացքում տվյալներ ուղղակիորեն ավելացնելու ունակությամբ:
Խնդիրը ցանցի բոլոր սարքավորումների վրա ստատիկ երթուղի ավելացնելն էր: Բայց յուրաքանչյուր սարքավորման վրա դեպի ինտերնետ մուտք գործելը տարբեր էր (և այն տարբերվում էր լռելյայն դարպասից): Հետևյալ սցենարը ցուցադրեց երթուղային աղյուսակը, մտավ կազմաձևման ռեժիմ, հրամանը մինչև վերջ չգրեց (Ինտերնետ մուտքի դարպասի IP հասցեն) - ես ավելացրեցի այս մասը: Այն բանից հետո, երբ ես սեղմեցի Enter, սկրիպտը շարունակեց կատարել հրամանը:
# $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()
Այս սկրիպտում, տողում. Սցենարը սպասում է հաջորդ տողին «(config) #» նիշերով Այս նիշերը հայտնվեցին այն բանից հետո, երբ ես մուտքագրեցի ip հասցեն և մուտքագրեցի:
Եզրակացություն.
Սցենար գրելիս և այն կատարելիս պետք է հետևել կանոնին. Սցենար գրելու և սցենարի կատարման ժամանակը երբեք չպետք է լինի ավելին, քան տեսականորեն ծախսված ժամանակը նույն աշխատանքը ձեռքով կատարելու վրա (պատճենել/տեղադրել նոթատետրից, գրել և կարգաբերել): գրքույկ ansible, գրելու և վրիպազերծող python սցենարի համար): Այսինքն՝ սկրիպտի օգտագործումը պետք է ժամանակ խնայի, այլ ոչ թե ժամանակ վատնի պրոցեսների միանգամյա ավտոմատացման վրա (այսինքն՝ երբ սցենարը եզակի է և այլևս կրկնություն չի լինի): Բայց եթե սցենարը եզակի է, և սցենարի հետ ավտոմատացումը և սցենարը գրելը/վրիպազերծելը ավելի քիչ ժամանակ է պահանջում, քան դա որևէ այլ եղանակով անելը (ansible, հրամանի պատուհան), ապա սցենարը լավագույն լուծումն է:
Սկրիպտի վրիպազերծում: Սցենարն աստիճանաբար աճում է, վրիպազերծումը տեղի է ունենում առաջին, երկրորդ, երրորդ սարքի վրա, իսկ չորրորդում սկրիպտը, ամենայն հավանականությամբ, լիովին կգործարկվի:
Մկնիկի միջոցով սկրիպտի գործարկումը (մուտքագրելով օգտանուն+գաղտնաբառ) սովորաբար ավելի արագ է, քան նոթատետրից օգտանունը և գաղտնաբառը պատճենելը: Բայց անվտանգ չէ անվտանգության տեսանկյունից։
Մեկ այլ (իրական) օրինակ՝ սկրիպտ օգտագործելիս. Դուք ուղիղ մուտք չունեք ցանցային սարքավորումներին: Բայց անհրաժեշտություն կա կարգավորել բոլոր ցանցային սարքավորումները (մտցրեք այն մոնիտորինգի համակարգ, կազմաձևեք լրացուցիչ օգտվողի անուն/գաղտնաբառ/snmpv3 օգտվողի անուն/գաղտնաբառ): Մուտք կա, երբ դուք գնում եք Core անջատիչ, դրանից դուք բացում եք SSH այլ սարքավորումներ: Ինչու չեք կարող օգտագործել Ansible-ը: - Քանի որ մենք բախվում ենք ցանցային սարքավորումների վրա թույլատրված միաժամանակյա նիստերի քանակի սահմանափակումին (տող vty 0 4, օգտատիրոջ միջերես vty 0 4) (մեկ այլ հարց այն է, թե ինչպես կարելի է գործարկել տարբեր սարքավորումներ Ansible-ում նույն SSH առաջին հոպով):
Սցենարը կրճատում է ժամանակը երկար գործողությունների ժամանակ, օրինակ՝ ֆայլերի պատճենումը FTP-ի միջոցով: Պատճենահանման ավարտից հետո սցենարն անմիջապես սկսում է աշխատել։ Մարդը պետք է տեսնի պատճենման ավարտը, հետո հասկանա պատճենման ավարտը, հետո մուտքագրի համապատասխան հրամանները։ Սցենարն այն օբյեկտիվորեն ավելի արագ է անում:
Սկրիպտները կիրառելի են այնտեղ, որտեղ անհնար է օգտագործել զանգվածային տվյալների առաքման գործիքներ՝ Վահանակ։ Կամ, երբ սարքավորումների որոշ տվյալներ եզակի են՝ հոսթի անունը, կառավարման ip հասցեն: Կամ ծրագիր գրելիս և վրիպազերծելիս դա ավելի դժվար է, քան սկրիպտի գործարկման ընթացքում սարքավորումներից ստացված տվյալներ ավելացնելը: - Երթուղի նշանակելու սկրիպտով օրինակ, երբ յուրաքանչյուր սարքավորում ունի ինտերնետ մատակարարի իր IP հասցեն: (Իմ գործընկերները գրել են նման սկրիպտներ. երբ DMVPN-ը խոսում էր 3-ից ավելի: Անհրաժեշտ էր փոխել DMVPN-ի կարգավորումները):
Դեպքի ուսումնասիրություն. սկզբնական կարգավորումների կարգավորում նոր անջատիչի վրա՝ օգտագործելով վահանակի պորտերը.
A. Միացրեք վահանակի մալուխը սարքի մեջ:
B. Գործարկեք սցենարը
Բ. Սպասել է սցենարի կատարմանը
D. Միացրեք վահանակի մալուխը հաջորդ սարքին:
Ե. Եթե անջատիչը վերջինը չէ, անցեք Բ քայլին:
Սցենարի աշխատանքի արդյունքում.
սկզբնական գաղտնաբառը տեղադրված է սարքավորման վրա:
Մուտքագրված օգտանունը
մուտքագրվում է սարքի եզակի IP հասցեն:
Հ.Գ. վիրահատությունը պետք է կրկնվեր։ Քանի որ կանխադրված ssh-ը կազմաձևված/անջատված չէր: (Այո, սա իմ սխալն է):
Երկար սկրիպտի օրինակ՝ երկու հարցումով՝ Hostname և IP հասցե: Այն ստեղծվել է վահանակի միջոցով սարքավորումները նախադրելու համար (9600 baud): Եվ նաև պատրաստել սարքավորումների միացումը ցանցին։
Նման սցենարներ սովորաբար պետք չեն, բայց սարքավորումների քանակը 15 հատ է։ Թույլատրվում է ավելի արագ կարգավորում: Սարքավորումը կարգավորելը ավելի արագ էր՝ օգտագործելով SecureCRT հրամանի պատուհանը:
ssh-ի համար հաշիվ ստեղծելը.
Մեկ այլ օրինակ. Կազմաձևումը կատարվում է նաև վահանակի միջոցով:
# $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-ի մասին.Վճարովի ծրագրակազմ՝ սկսած $99-ից (ամենափոքր գինը միայն SecureCRT-ի համար է մեկ տարվա համար) Պաշտոնական կայք
Ծրագրային ապահովման լիցենզիան գնվում է մեկ անգամ՝ աջակցությամբ (թարմացման համար), այնուհետև ծրագրաշարն օգտագործվում է այս լիցենզիայով անսահմանափակ ժամանակով:
Աշխատում է Mac OS X և Windows օպերացիոն համակարգերի վրա:
Կա սցենարի աջակցություն (այս հոդվածը)
Կա Հրամանի պատուհան
Serial/Telnet/SSH1/SSH2/Shell օպերացիոն համակարգ