SecureCRT-ում մուտքի ավտոմատացում՝ օգտագործելով սցենարներ

Ցանցային ինժեներները հաճախ բախվում են որոշակի դրվագներ նոթատետրից կոնսոլին պատճենելու/տեղադրելու խնդիր: Սովորաբար պետք է պատճենել մի քանի պարամետր՝ օգտանուն/գաղտնաբառ և այլ բան։ Սցենարների օգտագործումը թույլ է տալիս արագացնել այս գործընթացը: ԲԱՅՑ սկրիպտը գրելու և սկրիպտը գործարկելու առաջադրանքները պետք է ընդհանուր առմամբ ավելի քիչ ժամանակ խլեն, քան ձեռքով կազմաձևումը, հակառակ դեպքում սկրիպտներն անօգուտ են։

Ինչի՞ համար է այս հոդվածը: Այս հոդվածը Fast Start շարքից է և նպատակ ունի խնայել ցանցային ինժեներների ժամանակը մի քանի սարքերում սարքավորումներ (մեկ առաջադրանք) տեղադրելու ժամանակ: Օգտագործում է SecureCRT ծրագրակազմը և ներկառուցված սցենարի կատարման գործառույթը:

Պարունակություն

Ներածություն

SecureCRT ծրագիրն ունի ներկառուցված սկրիպտի կատարման մեխանիզմ՝ առանց տուփի: Ինչի՞ համար են նախատեսված տերմինալային սկրիպտները:

  • Ավտոմատացված I/O և նվազագույն I/O վավերացում:
  • Արագացրեք սովորական առաջադրանքների կատարումը՝ նվազեցնելով սարքավորումների կարգավորումների միջև դադարները: (Դե ֆակտո կրճատում է նույն սարքավորման վրա պատճենման/անցած գործողություններ կատարելու ժամանակի պատճառով առաջացած դադարները՝ 3 կամ ավելի հրամանի բեկորներով, որոնք պետք է կիրառվեն սարքաշարի վրա:)

Այս փաստաթուղթը ներառում է առաջադրանքները.

  • Պարզ սցենարների ստեղծում:
  • Սցենարների գործարկում SecureCRT-ում:
  • Պարզ և առաջադեմ սցենարներ օգտագործելու օրինակներ: (Փորձեք իրական կյանքից):

Պարզ սցենարների ստեղծում:

Ամենապարզ սկրիպտներն օգտագործում են ընդամենը երկու հրաման՝ Send և WaitForString: Այս ֆունկցիոնալությունը բավարար է կատարված առաջադրանքների 90%-ի (կամ ավելի) համար:

Սկրիպտները կարող են աշխատել Python, JS, VBS (Visual Basic), Perl և այլն:

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

Սովորաբար ֆայլ «*.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

Սովորաբար ֆայլ «*.vbs» ընդլայնմամբ

Ստեղծեք սցենար՝ օգտագործելով սցենարի մուտքը:

Թույլ է տալիս ավտոմատացնել սցենար գրելու գործընթացը: Դու սկսում ես սցենար գրել։ SecureCRT-ն ձայնագրում է հրամանները և հետագա ապարատային պատասխանը և ցուցադրում պատրաստի սցենարը ձեզ համար:

Ա. Սկսեք գրել սցենար.
SecureCRT ընտրացանկ => Սկրիպտ => Սկսել ձայնագրման սցենարը
բ. Կատարեք գործողություններ վահանակի հետ (կատարեք կազմաձևման քայլերը CLI-ում):
Վ. Ավարտեք սցենարը գրելը.
SecureCRT ընտրացանկ => Սկրիպտ => Դադարեցնել ձայնագրման սկրիպտը…
Պահպանեք սցենարի ֆայլը:

Կատարված հրամանների և պահպանված սցենարի օրինակ.

SecureCRT-ում մուտքի ավտոմատացում՝ օգտագործելով սցենարներ

Սցենարների գործարկում SecureCRT-ում:

Սցենարը ստեղծելուց/խմբագրելուց հետո առաջանում է տրամաբանական հարց՝ ինչպե՞ս կիրառել սցենարը։
Կան մի քանի եղանակներ.

  • Ձեռքով գործարկվում է Script մենյուից
  • Ավտոմատ մեկնարկ միացումից հետո (մուտքի սկրիպտ)
  • Ավտոմատ մուտք առանց սկրիպտ օգտագործելու
  • SecureCRT-ում կոճակի ձեռքով գործարկում (կոճակը դեռ պետք է ստեղծվի և ավելացվի SecureCRT-ում)

Ձեռքով գործարկվում է Script մենյուից

SecureCRT ընտրացանկ => Սկրիպտ => Գործարկել…
- Վերջին 10 սցենարները հիշվում են և հասանելի են արագ գործարկման համար.
SecureCRT ընտրացանկ => Սկրիպտ => 1 «Սցենարի ֆայլի անունը»
SecureCRT ընտրացանկ => Սկրիպտ => 2 «Սցենարի ֆայլի անունը»
SecureCRT ընտրացանկ => Սկրիպտ => 3 «Սցենարի ֆայլի անունը»
SecureCRT ընտրացանկ => Սկրիպտ => 4 «Սցենարի ֆայլի անունը»
SecureCRT ընտրացանկ => Սկրիպտ => 5 «Սցենարի ֆայլի անունը»

Ավտոմատ մեկնարկ միացումից հետո (մուտքի սկրիպտ)

Ավտոմատ մուտքագրման սկրիպտի կարգավորումները կազմաձևված են պահպանված աշխատաշրջանի համար՝ Միացում => Մուտքի Գործողություններ => Մուտքի սկրիպտ

SecureCRT-ում մուտքի ավտոմատացում՝ օգտագործելով սցենարներ

Ավտոմատ մուտք առանց սկրիպտ օգտագործելու

Հնարավոր է ավտոմատ կերպով մուտքագրել գաղտնաբառի օգտանունը՝ առանց սկրիպտ գրելու՝ օգտագործելով միայն SecureCRT-ի ներկառուցված ֆունկցիոնալությունը։ Կապի կարգավորումներում «Միացում» => Մուտք Գործողություններ => Ավտոմատ մուտքագրում - դուք պետք է լրացնեք մի քանի փաթեթներ, որոնք նշանակում են զույգեր. «Սպասվող տեքստ» + «Ուղարկված նիշերը այս տեքստին» կարող են լինել շատ նման զույգեր: (Օրինակ. 1-ին զույգը սպասում է օգտանունին, երկրորդը սպասում է գաղտնաբառին, երրորդը սպասում է արտոնյալ ռեժիմի հուշմանը, չորրորդ զույգը արտոնյալ ռեժիմի գաղտնաբառի համար):

Cisco ASA-ում ավտոմատ մուտքի օրինակ.

SecureCRT-ում մուտքի ավտոմատացում՝ օգտագործելով սցենարներ

SecureCRT-ում կոճակի ձեռքով գործարկում (կոճակը դեռ պետք է ստեղծվի և ավելացվի SecureCRT-ում)

SecureCRT-ում դուք կարող եք սկրիպտ վերագրել կոճակին: Կոճակը ավելացվում է հատուկ այդ նպատակով ստեղծված վահանակին:

Ա. Վահանակի ավելացում ինտերֆեյսին. SecureCRT Մենյու => Դիտել => Կոճակի բար
բ. Ավելացրեք կոճակ վահանակին և ավելացրեք սցենար: – Աջ սեղմեք կոճակների գծի վրա և համատեքստի ընտրացանկից ընտրեք «Նոր կոճակ…»:
Վ. «Քարտեզի կոճակ» երկխոսության վանդակում «Գործողություն» դաշտում ընտրեք «Գործարկել սցենար» գործողությունը (գործառույթը):
Նշեք կոճակի վերնագիր: Կոճակի պատկերակի գույնը: Ավարտեք կարգավորումները՝ սեղմելով Ok:

SecureCRT-ում մուտքի ավտոմատացում՝ օգտագործելով սցենարներ

Նշում:

Կոճակներով վահանակը շատ օգտակար գործառույթ է:

1. Հնարավոր է, երբ մուտք գործեք կոնկրետ նստաշրջան, նշեք, թե որ վահանակը բացել այս ներդիրում լռելյայնորեն:

2. Սարքավորումներով ստանդարտ գործողությունների համար հնարավոր է նախապես սահմանված գործողություններ սահմանել՝ ցույց տալ ցուցադրման տարբերակը, ցուցադրել run-config, պահպանել կոնֆիգուրացիան:

SecureCRT-ում մուտքի ավտոմատացում՝ օգտագործելով սցենարներ
Ոչ մի սցենար կցված չէ այս կոճակներին: Միայն գործողության գիծ.

SecureCRT-ում մուտքի ավտոմատացում՝ օգտագործելով սցենարներ
Կարգավորում - այնպես, որ նստաշրջանին անցնելիս նիստի կարգավորումներում բացվի կոճակներով անհրաժեշտ վահանակը.

SecureCRT-ում մուտքի ավտոմատացում՝ օգտագործելով սցենարներ
Հաճախորդի համար իմաստ ունի մուտք գործել անհատական ​​սկրիպտներ և գնալ վաճառողի համար հաճախակի հրամաններով վահանակ:

SecureCRT-ում մուտքի ավտոմատացում՝ օգտագործելով սցենարներ
Երբ սեղմում եք Go Cisco կոճակը, վահանակը անցնում է Cisco կոճակների գծին:

SecureCRT-ում մուտքի ավտոմատացում՝ օգտագործելով սցենարներ

Պարզ և առաջադեմ սցենարներ օգտագործելու օրինակներ: (Փորձեք իրական կյանքից):

Պարզ սցենարները բավական են գրեթե բոլոր առիթների համար։ Բայց մի անգամ ինձ անհրաժեշտ էր մի փոքր բարդացնել սցենարը՝ արագացնել աշխատանքը։ Այս բարդությունը պարզապես օգտագործողից պահանջել է լրացուցիչ տվյալներ երկխոսության վանդակում:

Օգտագործողից տվյալների հայցում երկխոսության տուփի միջոցով

Տվյալների հարցման սկրիպտում ունեի 2. Սա Hostname-ն է և IP հասցեի 4-րդ օկտետը։ Այս գործողությունը կատարելու համար ես google-ում փնտրեցի, թե ինչպես դա անել և գտա այն SecureCRT-ի պաշտոնական կայքում (vandyke): - ֆունկցիոնալությունը կոչվում է արագ:

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

Սցենարի այս մասում պահանջվում էր 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-ը կազմաձևված/անջատված չէր: (Այո, սա իմ սխալն է):

Օգտագործված աղբյուրներ.

1. Սցենարներ ստեղծելու մասին
2. Սցենարի օրինակներ

Հավելված 1. Նմուշի սցենարներ:


Երկար սկրիպտի օրինակ՝ երկու հարցումով՝ Hostname և IP հասցե: Այն ստեղծվել է վահանակի միջոցով սարքավորումները նախադրելու համար (9600 baud): Եվ նաև պատրաստել սարքավորումների միացումը ցանցին։

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

Նման սցենարներ սովորաբար պետք չեն, բայց սարքավորումների քանակը 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 օպերացիոն համակարգ

Source: www.habr.com