Автоматизирање на внесување во SecureCRT со помош на скрипти
Мрежните инженери често се соочуваат со задача да копираат/залепат одредени фрагменти од бележник на конзолата. Обично треба да копирате неколку параметри: Корисничко име/Лозинка и нешто друго. Употребата на скрипти ви овозможува да го забрзате овој процес. НО, задачите за пишување на скриптата и извршувањето на скриптата треба да одземат вкупно помалку време од рачната конфигурација, инаку скриптите се бескорисни.
За што е оваа статија? Оваа статија е од серијата Брз почеток и има за цел да заштеди време на мрежните инженери при поставување опрема (една задача) на повеќе уреди. Користи софтвер 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.
По креирањето/уредувањето на сценариото, се поставува природно прашање: Како да се примени сценариото?
Постојат неколку начини:
Рачно работи од менито Скрипта
Автоматско стартување по поврзувањето (скрипта за најавување)
Автоматско најавување без користење на скрипта
Рачно активирање со копче во SecureCRT (копче допрва треба да се создаде и додаде во SecureCRT)
Рачно работи од менито Скрипта
Мени SecureCRT => Скрипта => Изврши…
- Последните 10 скрипти се запаметени и достапни за брзо стартување:
Мени SecureCRT => Скрипта => 1 „Име на датотеката за скрипта“
Мени SecureCRT => Скрипта => 2 „Име на датотеката за скрипта“
Мени SecureCRT => Скрипта => 3 „Име на датотеката за скрипта“
Мени SecureCRT => Скрипта => 4 „Име на датотеката за скрипта“
Мени SecureCRT => Скрипта => 5 „Име на датотеката за скрипта“
Автоматско стартување по поврзувањето (скрипта за најавување)
Поставките за скрипта за автоматско евидентирање се конфигурирани за зачуваната сесија: Врска => Дејства за најавување => Скрипта за најавување
Автоматско најавување без користење на скрипта
Можно е автоматски да го внесете корисничкото име на лозинката без да пишувате скрипта, користејќи ја само вградената функционалност на SecureCRT. Во поставките за поврзување „Поврзување“ => Акции за најава => Автоматизирано најавување - треба да пополните неколку пакети - што значат паровите: „Очекуван текст“ + „Испратени знаци на овој текст“ може да има многу такви парови. (Пример: 1-ви пар чекаат за корисничко име, второ чекање за лозинка, трето чекање за известување за привилегиран режим, четврти пар за лозинка за привилегиран режим.)
Пример за автоматско најавување на Cisco ASA:
Рачно активирање со копче во SecureCRT (копче допрва треба да се создаде и додаде во SecureCRT)
Во SecureCRT, можете да доделите скрипта на копче. Копчето се додава на панел специјално создаден за оваа намена.
А. Додавање панел на интерфејсот: SecureCRT мени => Прикажи => Лента со копчиња
б. Додајте копче на панелот и додајте скрипта. – Десен-клик на лентата со копчиња и изберете „Ново копче…“ од контекстното мени.
В. Во полето за дијалог „Копче за карта“, во полето „Акција“, изберете ја акцијата (функција) „Изврши скрипта“.
Наведете наслов за копчето. Бојата за иконата на копчето. Завршете ги поставките со кликнување на Ок.
Забелешка:
Панелот со копчиња е многу корисна функционалност.
1. Можно е, кога се најавува на одредена сесија, да се одреди кој панел стандардно да се отвори на оваа картичка.
2. Можно е да се постават предефинирани дејства за стандардни дејства со опрема: прикажи ја верзијата за прикажување, прикажување на конфигурација за извршување, зачувување на конфигурацијата.
Ниту една скрипта не е прикачена на овие копчиња. Само акциона линија:
Поставување - така што кога се префрлате на сесија, потребниот панел со копчиња се отвора во поставките за сесија:
Има смисла клиентот да постави индивидуални скрипти за Најава и да оди на панелот со чести команди за продавачот.
Кога ќе го притиснете копчето Go Cisco, панелот се префрла на лентата со копчиња Cisco.
Примери за користење едноставни и напредни скрипти. (Вежбајте од реалниот живот.)
Едноставните скрипти се доволни за речиси сите прилики. Но, еднаш ми требаше малку да го комплицирам сценариото - да ја забрзам работата. Оваа компликација едноставно побара дополнителни податоци во дијалог прозорец од корисникот.
Барање податоци од корисникот со помош на дијалог прозорец
Во скриптата за барање податоци имав 2. Ова е името на домаќинот и четвртиот октет од IP адресата. За да ја изведам оваа акција - пребарував како да го направам тоа и го најдов на официјалната веб-страница на SecureCRT (vandyke). - функционалноста се нарекува промпт.
Овој дел од сценариото побара име на домаќин и броеви од последниот октет. Бидејќи имаше 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, а од него потоа на опремата поврзана со неа. За поврзување се користеше ssh клиентот вграден во софтверот IOS/хардвер. Според тоа, корисничкото име и лозинката беа побарани во конзолата. Со скриптата подолу, корисничкото име и лозинката беа внесени автоматски:
# $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()
Во оваа скрипта, во линијата: crt.Screen.Send("ip route 10.10.10.8 255.255.255.252 ") IP адресата на портата не е додадена и нема знак за враќање на превоз. Скриптата ја чека следната линија со знаците „(config) #“ Овие знаци се појавија откако ја внесов ip адресата и внесов.
Заклучок:
Кога пишувате скрипта и ја извршувате, мора да се следи правилото: Времето за пишување скрипта и извршување на скрипта никогаш не треба да биде повеќе од времето поминато теоретски за рачно извршување на истата работа (копирајте / залепете од бележник, пишување и дебагирање игротека за скрипта за ансибилно, пишување и дебагирање на python). Односно, употребата на скриптата треба да заштеди време, а не да губи време на еднократна автоматизација на процесите (т.е. кога сценариото е единствено и нема да има повеќе повторувања). Но, ако скриптата е уникатна и автоматизацијата со скриптата и пишувањето/дебагирањето на скриптата трае помалку време отколку тоа да се направи на кој било друг начин (ансибилно, команден прозорец), тогаш скриптата е најдоброто решение.
Дебагирање на скрипта. Скриптата постепено расте, дебагирањето се одвива при стартување на првиот, вториот, третиот уред, а до четвртиот најверојатно сценариото ќе биде целосно оперативно.
Извршувањето на скрипта (со внесување корисничко име+лозинка) со глувчето обично е побрзо од копирање на корисничко име и лозинка од бележник. Но, не е безбедно од безбедносна гледна точка.
Друг (вистински) пример кога користите скрипта: Немате директен пристап до мрежната опрема. Но, постои потреба да се конфигурира целата мрежна опрема (внесете ја во системот за следење, конфигурирајте дополнително Корисничко име/лозинка/snmpv3корисничко име/лозинка). Има пристап кога одите до Core прекинувачот, од него отворате SSH на друга опрема. Зошто не можете да користите Ansible. - Бидејќи наидуваме на ограничување на бројот на дозволени истовремени сесии на мрежната опрема (линија vty 0 4, кориснички интерфејс vty 0 4) (друго прашање е како да стартувате различна опрема во Ansible со истиот SSH прв скок).
Скриптата го намалува времето за време на долгите операции - на пример, копирање датотеки преку FTP. Откако ќе заврши копирањето, сценариото веднаш почнува да работи. Едно лице ќе треба да го види крајот на копирањето, потоа да го сфати крајот на копирањето, а потоа да ги внесе соодветните команди. Сценариото го прави тоа објективно побрзо.
Скриптите се применливи каде што е невозможно да се користат алатки за масовно доставување податоци: Конзола. Или кога некои од податоците за опремата се уникатни: име на домаќин, IP адреса за управување. Или при пишување програма и дебагирање е потешко отколку додавање податоци добиени од опремата додека работи скриптата. - Пример со скрипта за пропишување рута, кога секоја опрема има своја IP адреса на интернет провајдерот. (Моите колеги пишуваа такви скрипти - кога DMVPN зборуваше беше над 3. Беше неопходно да се сменат поставките за DMVPN).
Студија на случај: Конфигурирање на почетните поставки на нов прекинувач користејќи ги портите на конзолата:
A. Го приклучи кабелот на конзолата во уредот.
Б. Стартувај го сценариото
Б. Се чекаше да се изврши сценариото
D. Го приклучи кабелот на конзолата во следниот уред.
E. Ако прекинувачот не е последен, одете на чекор Б.
Како резултат на работата на сценариото:
почетната лозинка е поставена на опремата.
Внесено е корисничко име
се внесува единствената IP адреса на уредот.
П.С операцијата мораше да се повтори. Бидејќи стандардниот ssh не беше конфигуриран/оневозможен. (Да, ова е моја грешка.)
Пример за долга скрипта, со две прашања: име на домаќин и 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 оперативни системи.
Има поддршка за скрипта (оваа статија)
Постои Команден прозорец
Сериски / Телнет / SSH1 / SSH2 / оперативен систем Шел