Скрипттерди колдонуу менен SecureCRTке киргизүүнү автоматташтыруу

Тармак инженерлери көбүнчө блокноттон консолго айрым фрагменттерди көчүрүү/жабыштыруу милдетине туш болушат. Сиз адатта бир нече параметрлерди көчүрүп алышыңыз керек: Колдонуучунун аты/Сырсөз жана башка нерсе. Скрипттерди колдонуу бул процессти тездетүүгө мүмкүндүк берет. БИРОК скрипт жазуу жана скриптти аткаруу тапшырмалары кол менен конфигурациялоого караганда жалпысынан азыраак убакытты талап кылышы керек, антпесе скрипттер пайдасыз.

Бул макала эмне үчүн? Бул макала Fast Start сериясынан алынган жана бир нече түзмөктөрдө жабдууларды (бир тапшырма) орнотууда тармак инженерлеринин убактысын үнөмдөөгө багытталган. SecureCRT программасын жана орнотулган скрипт аткаруу функциясын колдонот.

ыраазы

тааныштыруу

SecureCRT программасында кутудан тышкары орнотулган сценарийди аткаруу механизми бар. Терминалдык скрипттер эмне үчүн?

  • Автоматташтырылган киргизүү/чыгаруу жана минималдуу киргизүү/чыгарууну текшерүү.
  • Күнүмдүк тапшырмаларды аткарууну тездетүү - жабдууларды орнотуулар ортосундагы тыныгууларды азайтуу. (Бир эле жабдыкта көчүрүү/өткөн аракеттерди аткаруу үчүн убакыттын натыйжасында келип чыккан тынымдардын де-факто кыскаруусу, аппараттык камсыздоого 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" кеңейтүүсү бар файл

Боскомантико

# $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 Меню => Көрүү => Баскыч тилкеси
б. Панелге баскычты кошуп, сценарийди кошуңуз. – Баскыч тилкесин оң баскыч менен чыкылдатып, контексттик менюдан “Жаңы баскыч…” тандаңыз.
В. "Карта баскычы" диалог терезесинде "Аракет" талаасында "Скриптти иштетүү" аракетин (функциясын) тандаңыз.
Баскыч үчүн коштомо жазууну көрсөтүңүз. Баскыч сөлөкөтүнүн түсү. Ok чыкылдатуу менен орнотууларды бүтүрүңүз.

Скрипттерди колдонуу менен SecureCRTке киргизүүнү автоматташтыруу

Эскертүү:

баскычтары менен панели абдан пайдалуу иш болуп саналат.

1. Белгилүү бир сессияга киргенде, демейки боюнча бул өтмөккө кайсы панелди ачууну көрсөтүүгө болот.

2. Жабдуу менен стандарттуу аракеттер үчүн алдын ала аныкталган аракеттерди коюуга болот: версияны көрсөтүү, run-config көрсөтүү, конфигурацияны сактоо.

Скрипттерди колдонуу менен SecureCRTке киргизүүнү автоматташтыруу
Бул баскычтарга эч кандай скрипт тиркелбейт. Иш-аракет линиясы гана:

Скрипттерди колдонуу менен SecureCRTке киргизүүнү автоматташтыруу
Орнотуу - сессияга өткөндө, сеанс орнотууларында баскычтары бар керектүү панель ачылат:

Скрипттерди колдонуу менен SecureCRTке киргизүүнү автоматташтыруу
Бул кардар Кирүү үчүн жеке скрипттерди орнотуу жана сатуучу үчүн тез-тез буйруктары менен панелге баруу үчүн мааниси бар.

Скрипттерди колдонуу менен SecureCRTке киргизүүнү автоматташтыруу
Go Cisco баскычын басканда, панель Cisco баскыч тилкесине өтөт.

Скрипттерди колдонуу менен SecureCRTке киргизүүнү автоматташтыруу

Жөнөкөй жана өркүндөтүлгөн скрипттерди колдонуунун мисалдары. (Чыныгы жашоодон практика.)

Жөнөкөй сценарийлер дээрлик бардык учурларда жетиштүү. Бирок бир жолу сценарийди бир аз татаалдаштырыш керек болчу - ишти тездетүү үчүн. Бул татаалдык жөн гана колдонуучудан диалог кутусунда кошумча маалыматтарды сурады.

Диалогдук терезе аркылуу колдонуучудан маалыматтарды суроо

Менде маалымат сурамынын скриптинде 2 бар болчу.Бул хост аты жана 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") 

Скрипттин бул бөлүгү акыркы октеттин атын жана номерлерин сурады. Анткени 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()

Скрипт аркылуу колдонуучу атын/паролду киргизүү

Бир кардардын тармактык жабдууларга кирүү түздөн-түз жабылган. Адегенде Демейки шлюзге, андан кийин ага кошулган жабдууларга кирүү менен жабдууга кирүүгө мүмкүн болгон. 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()

Бул скриптте, сапта: crt.Screen.Send("ip route 10.10.10.8 255.255.255.252 ") шлюздун IP дареги кошулган эмес жана каретканы кайтаруу белгиси жок. Скрипт "(конфигурация) #" символдору менен кийинки сапты күтүп жатат Бул белгилер мен IP дарегин киргизип, киргизгенден кийин пайда болду.

Корутунду:

Сценарийди жазууда жана аны аткарууда эрежени сактоо керек: Сценарийди жазуу жана скриптти аткаруу убактысы теориялык жактан бир эле ишти кол менен аткарууга кеткен убакыттан (блокноттон көчүрүү/чаптоо, жазуу жана мүчүлүштүктөрдү оңдоо) эч качан көп болбошу керек. питон скрипттерин жазуу жана оңдоо үчүн окуу китеби). Башкача айтканда, сценарийди колдонуу процесстерди бир жолку автоматташтырууга убакытты текке кетирбестен, убакытты үнөмдөө керек (б.а. скрипт уникалдуу болгондо жана кайра кайталоо болбойт). Бирок эгер скрипт уникалдуу болсо жана скрипт менен автоматташтыруу жана скриптти жазуу/ мүчүлүштүктөрдү оңдоо аны башка жол менен жасоого караганда азыраак убакытты талап кылса (ансибль, командалык терезе), анда скрипт эң жакшы чечим болуп саналат.
Скрипттин мүчүлүштүктөрүн оңдоо. Скрипт акырындык менен өсөт, мүчүлүштүктөрдү оңдоо биринчи, экинчи, үчүнчү түзмөктөрдө ишке ашат, ал эми төртүнчүгө чейин скрипт толук иштей баштайт.

Сценарийди (колдонуучунун аты+сырсөзүн киргизүү менен) чычкан менен иштетүү адатта блокноттон Колдонуучунун атын жана Сырсөздү көчүргөнгө караганда тезирээк болот. Бирок коопсуздук жагынан коопсуз эмес.
Скриптти колдонууда дагы бир (чыныгы) мисал: Сизде тармактык жабдууларга түз кирүү мүмкүнчүлүгү жок. Бирок бардык тармактык жабдыктарды конфигурациялоо зарылчылыгы бар (аны мониторинг тутумуна алып келиңиз, кошумча Username/password/snmpv3username/password конфигурациялаңыз). Негизги которгучка барганда кирүү мүмкүнчүлүгү бар, андан SSHти башка жабдууларга ачасыз. Эмне үчүн Ansible колдоно албайсыз? - Анткени биз тармактык жабдууларда уруксат берилген бир эле убакта сеанстардын санына чектөө киргизип жатабыз (сап vty 0 4, колдонуучу-интерфейс vty 0 4) (дагы бир суроо Ansibleде бир эле SSH биринчи хоп менен ар кандай жабдууларды кантип баштоо керек).

Скрипт узак операциялар учурунда убакытты кыскартат - мисалы, FTP аркылуу файлдарды көчүрүү. Көчүрүү аяктагандан кийин, скрипт дароо иштей баштайт. Адам көчүрүүнүн акырын көрүп, андан кийин көчүрүүнүн соңун түшүнүп, андан кийин тиешелүү буйруктарды киргизиши керек болот. Сценарий муну объективдүү тезирээк кылат.

Скрипттер массалык маалымат жеткирүү куралдарын колдонуу мүмкүн болбогон жерде колдонулат: Console. Же жабдуулар үчүн кээ бир маалыматтар уникалдуу болгондо: хост аты, башкаруу IP дареги. Же программаны жазууда жана мүчүлүштүктөрдү оңдоодо скрипт иштеп жатканда жабдуулардан алынган маалыматтарды кошууга караганда кыйыныраак. - Ар бир жабдыктын интернет провайдеринин өзүнүн IP дареги болгондо, маршрутту жазуу үчүн сценарий менен мисал. (Менин кесиптештерим мындай сценарийлерди жазышкан - DMVPN сүйлөгөндө 3дөн ашкан. DMVPN жөндөөлөрүн өзгөртүү керек болчу).

Окуя: Консол портторун колдонуу менен жаңы коммутатордо баштапкы орнотууларды конфигурациялоо:

A. Аппаратка консолдун кабелин сайган.
B. Сценарийди иштетиңиз
Сценарийдин аткарылышын күткөн В
D. Кийинки түзмөккө консол кабелин сайып.
E. Эгерде алмаштыргыч акыркысы болбосо, В кадамына өтүңүз.

Сценарийдин ишинин натыйжасында:

  • баштапкы сырсөз жабдууларга коюлган.
  • Колдонуучунун аты киргизилди
  • аппараттын уникалдуу IP дареги киргизилет.

PS операцияны кайра кайталоо керек болчу. Анткени Демейки ssh конфигурацияланган/өчүрүлгөн эмес. (Ооба, бул менин катам.)

Колдонулган булактар.

1. Скрипттерди түзүү жөнүндө
2. Скрипт мисалдары

1-тиркеме: Сценарийлердин үлгүлөрү.


Узун скрипттин мисалы, эки суроо менен: Хост аты жана IP дареги. Ал консол (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 даана. Тезирээк орнотууга уруксат берилди. SecureCRT Command терезеси аркылуу жабдууларды орнотуу тезирээк болду.

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 операциялык системаларында иштейт.

Скрипт колдоо бар (бул макала)
бар буйрук терезе
Сериялык/Telnet/SSH1/SSH2/Shell операциялык системасы

Source: www.habr.com