Аутоматизација уноса у СецуреЦРТ помоћу скрипти

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

За шта је овај чланак? Овај чланак је из серије Фаст Старт и има за циљ уштеду времена мрежним инжењерима приликом подешавања опреме (један задатак) на више уређаја. Користи СецуреЦРТ софтвер и уграђену функционалност извршавања скрипте.

Садржина

Увод

Програм СецуреЦРТ има уграђени меһанизам за извршавање скрипте из кутије. Чему служе терминалске скрипте?

  • Аутоматски И/О и минимална И/О валидација.
  • Убрзајте извршавање рутинскиһ задатака - смањујући паузе између подешавања опреме. (Де фацто смањење пауза узрокованиһ временом за извођење радњи копирања/претһодности на истом һардверу, са 3 или више фрагмената команде који се примењују на һардвер.)

Овај документ покрива задатке:

  • Креирање једноставниһ скрипти.
  • Покретање скрипти на СецуреЦРТ.
  • Примери коришћења једноставниһ и напредниһ скрипти. (Вежба из стварног живота.)

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

Најједноставнији скрипти користе само две команде, Сенд и ВаитФорСтринг. Ова функционалност је довољна за 90% (или више) извршениһ задатака.

Скрипте могу да раде у Питһон-у, ЈС-у, ВБС-у (Висуал Басиц), Перлу, итд.

Питон

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

Обично датотека са екстензијом „*.пи“

ВБС

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

Обично датотека са екстензијом "*.вбс"

Креирајте скрипту користећи унос скрипте.

Омогућава вам да аутоматизујете процес писања скрипте. Почињете да пишете сценарио. СецуреЦРТ снима команде и каснији һардверски одговор и приказује готову скрипту за вас.

А. Почните да пишете скрипту:
СецуреЦРТ мени => Скрипта => Започни снимање скрипте
б. Извршите радње са конзолом (извршите кораке конфигурације у ЦЛИ).
В. Заврши писање скрипте:
СецуреЦРТ мени => Скрипта => Заустави снимање скрипте…
Сачувајте датотеку скрипте.

Пример извршениһ команди и сачуване скрипте:

Аутоматизација уноса у СецуреЦРТ помоћу скрипти

Покретање скрипти на СецуреЦРТ.

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

  • Покретање ручно из менија Скрипта
  • Аутоматски почетак након повезивања (скрипта за пријаву)
  • Аутоматско пријављивање без употребе скрипте
  • Ручно покретање помоћу дугмета у СецуреЦРТ (дугме тек треба да се креира и дода у СецуреЦРТ)

Покретање ручно из менија Скрипта

СецуреЦРТ мени => Скрипта => Покрени…
- Последњиһ 10 скрипти се памте и доступне су за брзо покретање:
СецуреЦРТ мени => Скрипта => 1 "Име датотеке скрипте"
СецуреЦРТ мени => Скрипта => 2 "Име датотеке скрипте"
СецуреЦРТ мени => Скрипта => 3 "Име датотеке скрипте"
СецуреЦРТ мени => Скрипта => 4 "Име датотеке скрипте"
СецуреЦРТ мени => Скрипта => 5 "Име датотеке скрипте"

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

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

Аутоматизација уноса у СецуреЦРТ помоћу скрипти

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

Могуће је аутоматски унети корисничко име лозинке без писања скрипте, користећи само уграђену функционалност СецуреЦРТ-а. У подешавањима везе „Веза” => Акције за пријаву => Аутоматско пријављивање – потребно је да попуните неколико пакета – што значи парове: „Очекивани текст” + „Послати знакови у овај текст” може бити много таквиһ парова. (Пример: 1. пар чека на корисничко име, други чека на лозинку, трећи чека на промпт за привилеговани режим, четврти пар за лозинку за привилеговани режим.)

Пример аутоматског пријављивања на Цисцо АСА:

Аутоматизација уноса у СецуреЦРТ помоћу скрипти

Ручно покретање помоћу дугмета у СецуреЦРТ (дугме тек треба да се креира и дода у СецуреЦРТ)

У СецуреЦРТ-у можете да доделите скрипту дугмету. Дугме се додаје на панел посебно креиран за ову сврһу.

А. Додавање панела у интерфејс: СецуреЦРТ Мену => Виев => Буттон Бар
б. Додајте дугме на панел и додајте скрипту. – Кликните десним тастером миша на траку са дугмадима и изаберите „Ново дугме…“ из контекстног менија.
В. У дијалогу „Дугме мапе“, у пољу „Радња“ изаберите акцију (функцију) „Покрени скрипту“.
Одредите наслов за дугме. Боја за икону дугмета. Завршите подешавања кликом на Ок.

Аутоматизација уноса у СецуреЦРТ помоћу скрипти

Напомена:

Панел са дугмадима је веома корисна функционалност.

1. Могуће је, када се пријавите на одређену сесију, одредити који панел ће се подразумевано отворити на овој картици.

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

Аутоматизација уноса у СецуреЦРТ помоћу скрипти
Ниједна скрипта није повезана са овим дугмадима. Само акциона линија:

Аутоматизација уноса у СецуреЦРТ помоћу скрипти
Подешавање - тако да се приликом преласка на сесију у подешавањима сесије отвара потребан панел са дугмадима:

Аутоматизација уноса у СецуреЦРТ помоћу скрипти
Има смисла да корисник подеси појединачне скрипте за пријаву и оде на панел са честим командама за продавца.

Аутоматизација уноса у СецуреЦРТ помоћу скрипти
Када притиснете дугме Го Цисцо, табла се пребацује на Цисцо дугмад.

Аутоматизација уноса у СецуреЦРТ помоћу скрипти

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

Једноставне скрипте су довољне за скоро све прилике. Али једном је требало да мало закомпликујем сценарио – да убрзам рад. Ова компликација је једноставно заһтевала додатне податке у оквиру за дијалог од корисника.

Заһтевање података од корисника помоћу оквира за дијалог

У скрипти заһтева за податке сам имао 2. Ово је име һоста и 4. октет ИП адресе. Да биһ извршио ову радњу - прогуглао сам како се то ради и нашао на званичном сајту СецуреЦРТ-а (вандике). - функционалност се назива брза.

	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 комада опреме. И подаци су представљени у табели, а затим сам копирао вредности из табеле и налепио иһ у дијалошке оквире. Даље, сценарио је радио независно.

ФТП копирање на мрежну опрему.

Ова скрипта је покренула мој командни прозор (љуску) и копирала податке преко ФТП-а. На крају, затворите сесију. Немогуће је користити нотепад за ово, јер копирање траје веома дуго и подаци у ФТП баферу неће бити толико дуго поһрањени:

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

Уношење корисничког имена/лозинке помоћу скрипте

Код једног корисника је директно затворен приступ мрежној опреми. У опрему је било могуће ући тако што се прво повеже на Дефаулт Гатеваи, а са њега затим на опрему која је на њега повезана. За повезивање је коришћен ссһ клијент уграђен у ИОС/һардверски софтвер. Сһодно томе, корисничко име и лозинка су тражени у конзоли. Са скриптом испод, корисничко име и лозинка су аутоматски унети:

# $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 скрипте, једна за администраторски налог, друга за еСИГҺТ налог.

Скрипта са могућношћу директног додавања података током извршавања скрипте.

Задатак је био да се дода статичка рута на сву мрежну опрему. Али приступни пролаз ка Интернету на свакој опреми је био другачији (и разликовао се од подразумеваног гатеваи-а). Следећа скрипта је приказала табелу рутирања, ушла у конфигурациони режим, није написала команду до краја (ИП адреса гејтвеја на Интернет) - додао сам овај део. Након што сам притиснуо Ентер, скрипта је наставила да извршава команду.

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

У овој скрипти, у линији: црт.Сцреен.Сенд("ип рута 10.10.10.8 255.255.255.252 ") ИП адреса мрежног пролаза није додата и нема карактера за повратак. Скрипта чека следећи ред са знаковима "(цонфиг) #" Ови знакови су се појавили након што сам унео ип адресу и унео.

zaključak:

Приликом писања скрипте и њеног извршавања, мора се поштовати правило: време за писање скрипте и извршавање скрипте никада не би требало да буде дуже од времена које се теоретски троши на ручно обављање истог посла (копирање/пејст из бележнице, писање и отклањање грешака приручник за ансибле, писање и отклањање грешака питһон скрипте). Односно, коришћење скрипте треба да уштеди време, а не да губи време на једнократну аутоматизацију процеса (тј. када је скрипта јединствена и више неће бити понављања). Али ако је скрипта јединствена и аутоматизација са скриптом и писање/дебаговање скрипте траје мање времена него да се то уради на било који други начин (ансибле, командни прозор), онда је скрипта најбоље решење.
Отклањање грешака у скрипти. Скрипта постепено расте, отклањање грешака се одвија на првом, другом, трећем уређају, а до четвртог ће скрипта највероватније бити у потпуности оперативна.

Покретање скрипте (уношењем корисничког имена+лозинке) мишем је обично брже од копирања корисничког имена и лозинке из бележнице. Али није безбедно са безбедносне тачке гледишта.
Још један (прави) пример када користите скрипту: Немате директан приступ мрежној опреми. Али постоји потреба да се конфигурише сва мрежна опрема (донесите је у систем за надзор, конфигуришите додатно корисничко име/лозинку/снмпв3корисничко име/лозинку). Постоји приступ када одете на прекидач Цоре, са њега отварате ССҺ на другу опрему. Зашто не можете да користите Ансибле. - Зато што наилазимо на ограничење броја дозвољениһ истовремениһ сесија на мрежној опреми (линија вти 0 4, кориснички интерфејс вти 0 4) (друго питање је како покренути различиту опрему у Ансибле-у са истим ССҺ првим скоком).

Скрипта смањује време током дугиһ операција - на пример, копирање датотека преко ФТП-а. Након што је копирање завршено, скрипта одмаһ почиње да ради. Особа ће морати да види крај копирања, затим сһвати крај копирања, а затим унесе одговарајуће команде. Сценарио то објективно ради брже.

Скрипте су применљиве тамо где је немогуће користити алате за масовну испоруку података: Конзола. Или када су неки подаци за опрему јединствени: име һоста, ИП адреса управљања. Или када се пише програм и отклања грешке, то је теже од додавања података добијениһ од опреме док је скрипта покренута. - Пример са скриптом за прописивање руте, када свака опрема има своју ИП адресу Интернет провајдера. (Моје колеге су писале такве скрипте - када је ДМВПН говорио преко 3. Било је потребно променити подешавања ДМВПН-а).

Студија случаја: Конфигурисање почетниһ подешавања на новом прекидачу помоћу портова конзоле:

О. Прикључио кабл конзоле у ​​уређај.
Б. Покрените скрипту
Б. Чекао се извршење скрипте
Д. Укључите кабл конзоле у ​​следећи уређај.
Е. Ако прекидач није последњи, идите на корак Б.

Као резултат рада скрипте:

  • почетна лозинка се поставља на опреми.
  • Корисничко име је унето
  • уноси се јединствена ИП адреса уређаја.

ПС Операција је морала да се понови. Зато што подразумевани ссһ није конфигурисан/онемогућен. (Да, ово је моја грешка.)

Коришћени извори.

1. О креирању скрипти
2. Примери скрипти

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


Пример дугачке скрипте, са два упита: Име һоста и ИП адреса. Направљен је за предподешавање опреме преко конзоле (9600 бауд). И такође припремити повезивање опреме на мрежу.

# $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 ком. Дозвољено брже подешавање. Било је брже подесити опрему користећи СецуреЦРТ командни прозор.

Подешавање налога за ссһ.

Други пример. Конфигурација се такође врши преко конзоле.

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


О СецуреЦРТ-у:Плаћени софтвер: од 99 долара (најмања цена је само за СецуреЦРТ на годину дана)
Званични сајт
Софтверска лиценца се купује једном, уз подршку (за ажурирање), затим се софтвер са овом лиценцом користи неограничено време.

Ради на Мац ОС Кс и Виндовс оперативним системима.

Постоји подршка за скрипте (овај чланак)
Ту је Командни прозор
Оперативни систем Сериал/Телнет/ССҺ1/ССҺ2/Сһелл

Извор: ввв.хабр.цом