ProHoster > Blog > башкаруу > Скрипттерди колдонуу менен SecureCRTке киргизүүнү автоматташтыруу
Скрипттерди колдонуу менен SecureCRTке киргизүүнү автоматташтыруу
Тармак инженерлери көбүнчө блокноттон консолго айрым фрагменттерди көчүрүү/жабыштыруу милдетине туш болушат. Сиз адатта бир нече параметрлерди көчүрүп алышыңыз керек: Колдонуучунун аты/Сырсөз жана башка нерсе. Скрипттерди колдонуу бул процессти тездетүүгө мүмкүндүк берет. БИРОК скрипт жазуу жана скриптти аткаруу тапшырмалары кол менен конфигурациялоого караганда жалпысынан азыраак убакытты талап кылышы керек, антпесе скрипттер пайдасыз.
Бул макала эмне үчүн? Бул макала Fast Start сериясынан алынган жана бир нече түзмөктөрдө жабдууларды (бир тапшырма) орнотууда тармак инженерлеринин убактысын үнөмдөөгө багытталган. SecureCRT программасын жана орнотулган скрипт аткаруу функциясын колдонот. ыраазы
SecureCRT программасында кутудан тышкары орнотулган сценарийди аткаруу механизми бар. Терминалдык скрипттер эмне үчүн?
Автоматташтырылган киргизүү/чыгаруу жана минималдуу киргизүү/чыгарууну текшерүү.
Күнүмдүк тапшырмаларды аткарууну тездетүү - жабдууларды орнотуулар ортосундагы тыныгууларды азайтуу. (Бир эле жабдыкта көчүрүү/өткөн аракеттерди аткаруу үчүн убакыттын натыйжасында келип чыккан тынымдардын де-факто кыскаруусу, аппараттык камсыздоого 3 же андан көп команда фрагменттери колдонулат.)
Бул документ милдеттерди камтыйт:
Жөнөкөй сценарийлерди түзүү.
SecureCRTде скрипттерди иштетүү.
Жөнөкөй жана өркүндөтүлгөн скрипттерди колдонуунун мисалдары. (Чыныгы жашоодон практика.)
Жөнөкөй сценарийлерди түзүү.
Эң жөнөкөй скрипттер эки гана буйрукту колдонушат, Send жана WaitForString. Бул функция аткарылган иштердин 90% (же андан көп) үчүн жетиштүү.
# $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тин орнотулган функцияларын колдонуу менен, скрипт жазбастан эле автоматтык түрдө сырсөздүн колдонуучу атын киргизүүгө болот. Туташуу жөндөөлөрүндө "Байланыш" => Кирүү аракеттери => Кирүүнү автоматташтыруу - бир нече таңгактарды толтуруу керек - бул жуптарды билдирет: "Күтүлгөн текст" + "Бул текстке жөнөтүлгөн символдор" мындай түгөйлөр көп болушу мүмкүн. (Мисалы: 1-жуп колдонуучунун атын күтүүдө, экинчиси сырсөздү күтүп жатат, үчүнчүсү артыкчылыктуу режимдин чакыруусун күтүүдө, төртүнчү жуп артыкчылык режиминин сырсөзүн күтүп жатат.)
Cisco ASAга автоматтык түрдө кирүүнүн мисалы:
SecureCRT'деги баскыч менен кол менен ишке киргизүү (баскыч али түзүлүп, SecureCRTге кошула элек)
SecureCRTде сиз баскычка скрипт дайындай аласыз. Баскыч бул үчүн атайын түзүлгөн панелге кошулат.
А. Интерфейске панелди кошуу: SecureCRT Меню => Көрүү => Баскыч тилкеси
б. Панелге баскычты кошуп, сценарийди кошуңуз. – Баскыч тилкесин оң баскыч менен чыкылдатып, контексттик менюдан “Жаңы баскыч…” тандаңыз.
В. "Карта баскычы" диалог терезесинде "Аракет" талаасында "Скриптти иштетүү" аракетин (функциясын) тандаңыз.
Баскыч үчүн коштомо жазууну көрсөтүңүз. Баскыч сөлөкөтүнүн түсү. Ok чыкылдатуу менен орнотууларды бүтүрүңүз.
Эскертүү:
баскычтары менен панели абдан пайдалуу иш болуп саналат.
1. Белгилүү бир сессияга киргенде, демейки боюнча бул өтмөккө кайсы панелди ачууну көрсөтүүгө болот.
2. Жабдуу менен стандарттуу аракеттер үчүн алдын ала аныкталган аракеттерди коюуга болот: версияны көрсөтүү, run-config көрсөтүү, конфигурацияны сактоо.
Бул баскычтарга эч кандай скрипт тиркелбейт. Иш-аракет линиясы гана:
Орнотуу - сессияга өткөндө, сеанс орнотууларында баскычтары бар керектүү панель ачылат:
Бул кардар Кирүү үчүн жеке скрипттерди орнотуу жана сатуучу үчүн тез-тез буйруктары менен панелге баруу үчүн мааниси бар.
Go Cisco баскычын басканда, панель Cisco баскыч тилкесине өтөт.
Жөнөкөй жана өркүндөтүлгөн скрипттерди колдонуунун мисалдары. (Чыныгы жашоодон практика.)
Жөнөкөй сценарийлер дээрлик бардык учурларда жетиштүү. Бирок бир жолу сценарийди бир аз татаалдаштырыш керек болчу - ишти тездетүү үчүн. Бул татаалдык жөн гана колдонуучудан диалог кутусунда кошумча маалыматтарды сурады.
Диалогдук терезе аркылуу колдонуучудан маалыматтарды суроо
Менде маалымат сурамынын скриптинде 2 бар болчу.Бул хост аты жана IP даректин 4-октети. Бул аракетти аткаруу үчүн - мен муну кантип жасоону google'де издеп, аны 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()
Скрипт аркылуу колдонуучу атын/паролду киргизүү
Бир кардардын тармактык жабдууларга кирүү түздөн-түз жабылган. Адегенде Демейки шлюзге, андан кийин ага кошулган жабдууларга кирүү менен жабдууга кирүүгө мүмкүн болгон. 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 конфигурацияланган/өчүрүлгөн эмес. (Ооба, бул менин катам.)
Узун скрипттин мисалы, эки суроо менен: Хост аты жана IP дареги. Ал консол (9600 бауд) аркылуу жабдууларды алдын ала орнотуу үчүн түзүлгөн. Жана ошондой эле тармакка жабдууларды кошуу даярдоо.
Мындай скрипттер, адатта, кереги жок, бирок жабдуулардын саны 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 операциялык системасы