Автоматизирање на внесување во SecureCRT со помош на скрипти

Мрежните инженери често се соочуваат со задача да копираат/залепат одредени фрагменти од бележник на конзолата. Обично треба да копирате неколку параметри: Корисничко име/Лозинка и нешто друго. Употребата на скрипти ви овозможува да го забрзате овој процес. НО, задачите за пишување на скриптата и извршувањето на скриптата треба да одземат вкупно помалку време од рачната конфигурација, инаку скриптите се бескорисни.

За што е оваа статија? Оваа статија е од серијата Брз почеток и има за цел да заштеди време на мрежните инженери при поставување опрема (една задача) на повеќе уреди. Користи софтвер SecureCRT и вградена функционалност за извршување на скрипта.

содржина

Вовед

Програмата SecureCRT има вграден механизам за извршување на скрипта надвор од кутијата. За што служат терминалните скрипти?

  • Автоматизирано I/O и минимална I/O валидација.
  • Забрзајте го извршувањето на рутинските задачи - намалување на паузите помеѓу поставките на опремата. (Де факто намалување на паузите предизвикани од времето за извршување на дејствата за копирање/минати на истиот хардвер, со 3 или повеќе фрагменти на команди што треба да се применат на хардверот.)

Овој документ ги опфаќа задачите:

  • Креирање на едноставни скрипти.
  • Вклучување на скрипти на SecureCRT.
  • Примери за користење едноставни и напредни скрипти. (Вежбајте од реалниот живот.)

Креирање на едноставни скрипти.

Наједноставните скрипти користат само две команди, Send и WaitForString. Оваа функционалност е доволна за 90% (или повеќе) од извршените задачи.

Скриптите можат да работат во Python, JS, VBS (Visual Basic), Perl, итн.

Пајтон

# $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.

По креирањето/уредувањето на сценариото, се поставува природно прашање: Како да се примени сценариото?
Постојат неколку начини:

  • Рачно работи од менито Скрипта
  • Автоматско стартување по поврзувањето (скрипта за најавување)
  • Автоматско најавување без користење на скрипта
  • Рачно активирање со копче во SecureCRT (копче допрва треба да се создаде и додаде во SecureCRT)

Рачно работи од менито Скрипта

Мени SecureCRT => Скрипта => Изврши…
- Последните 10 скрипти се запаметени и достапни за брзо стартување:
Мени SecureCRT => Скрипта => 1 „Име на датотеката за скрипта“
Мени SecureCRT => Скрипта => 2 „Име на датотеката за скрипта“
Мени SecureCRT => Скрипта => 3 „Име на датотеката за скрипта“
Мени SecureCRT => Скрипта => 4 „Име на датотеката за скрипта“
Мени SecureCRT => Скрипта => 5 „Име на датотеката за скрипта“

Автоматско стартување по поврзувањето (скрипта за најавување)

Поставките за скрипта за автоматско евидентирање се конфигурирани за зачуваната сесија: Врска => Дејства за најавување => Скрипта за најавување

Автоматизирање на внесување во SecureCRT со помош на скрипти

Автоматско најавување без користење на скрипта

Можно е автоматски да го внесете корисничкото име на лозинката без да пишувате скрипта, користејќи ја само вградената функционалност на SecureCRT. Во поставките за поврзување „Поврзување“ => Акции за најава => Автоматизирано најавување - треба да пополните неколку пакети - што значат паровите: „Очекуван текст“ + „Испратени знаци на овој текст“ може да има многу такви парови. (Пример: 1-ви пар чекаат за корисничко име, второ чекање за лозинка, трето чекање за известување за привилегиран режим, четврти пар за лозинка за привилегиран режим.)

Пример за автоматско најавување на Cisco ASA:

Автоматизирање на внесување во SecureCRT со помош на скрипти

Рачно активирање со копче во SecureCRT (копче допрва треба да се создаде и додаде во SecureCRT)

Во SecureCRT, можете да доделите скрипта на копче. Копчето се додава на панел специјално создаден за оваа намена.

А. Додавање панел на интерфејсот: SecureCRT мени => Прикажи => Лента со копчиња
б. Додајте копче на панелот и додајте скрипта. – Десен-клик на лентата со копчиња и изберете „Ново копче…“ од контекстното мени.
В. Во полето за дијалог „Копче за карта“, во полето „Акција“, изберете ја акцијата (функција) „Изврши скрипта“.
Наведете наслов за копчето. Бојата за иконата на копчето. Завршете ги поставките со кликнување на Ок.

Автоматизирање на внесување во SecureCRT со помош на скрипти

Забелешка:

Панелот со копчиња е многу корисна функционалност.

1. Можно е, кога се најавува на одредена сесија, да се одреди кој панел стандардно да се отвори на оваа картичка.

2. Можно е да се постават предефинирани дејства за стандардни дејства со опрема: прикажи ја верзијата за прикажување, прикажување на конфигурација за извршување, зачувување на конфигурацијата.

Автоматизирање на внесување во SecureCRT со помош на скрипти
Ниту една скрипта не е прикачена на овие копчиња. Само акциона линија:

Автоматизирање на внесување во SecureCRT со помош на скрипти
Поставување - така што кога се префрлате на сесија, потребниот панел со копчиња се отвора во поставките за сесија:

Автоматизирање на внесување во SecureCRT со помош на скрипти
Има смисла клиентот да постави индивидуални скрипти за Најава и да оди на панелот со чести команди за продавачот.

Автоматизирање на внесување во SecureCRT со помош на скрипти
Кога ќе го притиснете копчето Go Cisco, панелот се префрла на лентата со копчиња Cisco.

Автоматизирање на внесување во SecureCRT со помош на скрипти

Примери за користење едноставни и напредни скрипти. (Вежбајте од реалниот живот.)

Едноставните скрипти се доволни за речиси сите прилики. Но, еднаш ми требаше малку да го комплицирам сценариото - да ја забрзам работата. Оваа компликација едноставно побара дополнителни податоци во дијалог прозорец од корисникот.

Барање податоци од корисникот со помош на дијалог прозорец

Во скриптата за барање податоци имав 2. Ова е името на домаќинот и четвртиот октет од IP адресата. За да ја изведам оваа акција - пребарував како да го направам тоа и го најдов на официјалната веб-страница на 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") 

Овој дел од сценариото побара име на домаќин и броеви од последниот октет. Бидејќи имаше 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 не беше конфигуриран/оневозможен. (Да, ова е моја грешка.)

Користени извори.

1. За создавање скрипти
2. Примери за скрипти

Додаток 1: Примерок на скрипти.


Пример за долга скрипта, со две прашања: име на домаќин и 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 оперативни системи.

Има поддршка за скрипта (оваа статија)
Постои Команден прозорец
Сериски / Телнет / SSH1 / SSH2 / оперативен систем Шел

Извор: www.habr.com