ProHoster > Блог > басқарма > Сценарийлерді пайдалану арқылы SecureCRT жүйесіндегі енгізуді автоматтандыру
Сценарийлерді пайдалану арқылы SecureCRT жүйесіндегі енгізуді автоматтандыру
Желілік инженерлер блокноттан консольге белгілі бір фрагменттерді көшіру/қою міндетімен жиі кездеседі. Әдетте бірнеше параметрді көшіру керек: пайдаланушы аты/пароль және басқа нәрсе. Сценарийлерді пайдалану бұл процесті жылдамдатуға мүмкіндік береді. БІРАҚ сценарийді жазу және сценарийді орындау тапсырмалары қолмен конфигурациялауға қарағанда жалпы алғанда аз уақыт алуы керек, әйтпесе сценарийлер пайдасыз болады.
Бұл мақала не үшін? Бұл мақала Fast Start сериясынан алынған және бірнеше құрылғыларда жабдықты (бір тапсырма) орнату кезінде желі инженерлерінің уақытын үнемдеуге бағытталған. SecureCRT бағдарламалық құралын және кірістірілген сценарийді орындау мүмкіндігін пайдаланады. Мазмұны
SecureCRT бағдарламасында қораптан тыс кірістірілген сценарийді орындау механизмі бар. Терминалды сценарийлер не үшін қажет?
Автоматтандырылған енгізу/шығару және минималды енгізу/шығару тексеруі.
Күнделікті тапсырмаларды орындауды жылдамдату - жабдық параметрлері арасындағы үзілістерді азайту. (Бір аппараттық құралда көшіру/өткен әрекеттерді орындау уақытынан туындаған үзілістердің іс жүзінде қысқаруы, аппараттық құралға қолданылатын 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 мекенжайының 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 мекенжайы қосылмаған және каретканы қайтару таңбасы жоқ. Сценарий «(config) #» таңбалары бар келесі жолды күтуде Бұл таңбалар мен IP мекенжайын енгізіп, енгізгеннен кейін пайда болды.
қорытынды:
Сценарий жазу және оны орындау кезінде ережені сақтау керек: Сценарий жазу және сценарийді орындау уақыты ешқашан теориялық тұрғыдан сол жұмысты қолмен орындауға кететін уақыттан аспауы керек (блокноттан көшіру/қою, жазу және жөндеу питон сценарийін жазуға және жөндеуге арналған ойын кітабы). Яғни, сценарийді пайдалану уақытты үнемдеу керек және процестерді бір реттік автоматтандыруға уақытты жоғалтпауы керек (яғни, сценарий бірегей болғанда және қайталану болмайды). Бірақ сценарий бірегей болса және сценариймен автоматтандыру және сценарийді жазу/отладтау оны кез келген басқа тәсілмен (ансибилді, пәрмен терезесі) орындаудан аз уақытты қажет ететін болса, онда сценарий ең жақсы шешім болып табылады.
Скриптті жөндеу. Сценарий бірте-бірте өседі, жөндеу бірінші, екінші, үшінші құрылғыда іске қосылған кезде орын алады, ал төртіншіге қарай сценарий толықтай жұмыс істейтін болады.
Тінтуірмен сценарийді іске қосу (пайдаланушы аты+құпия сөзді енгізу арқылы) әдетте блокноттан пайдаланушы аты мен құпия сөзді көшіруге қарағанда жылдамырақ. Бірақ қауіпсіздік тұрғысынан қауіпсіз емес.
Сценарийді пайдалану кезіндегі тағы бір (нақты) мысал: Сізде желілік жабдыққа тікелей кіру мүмкіндігі жоқ. Бірақ барлық желілік жабдықты конфигурациялау қажет (оны бақылау жүйесіне енгізіңіз, қосымша пайдаланушы аты/пароль/snmpv3 пайдаланушы аты/құпия сөзді конфигурациялаңыз). Core қосқышына өткен кезде қол жетімділік бар, одан сіз басқа жабдыққа SSH ашасыз. Неліктен Ansible қолданбасын пайдалана алмайсыз? - Себебі біз желілік жабдықта рұқсат етілген бір уақыттағы сеанстар санына шектеу қойдық (сызық vty 0 4, пайдаланушы интерфейсі vty 0 4) (басқа мәселе Ansible-де әртүрлі жабдықты бірдей SSH бірінші секіруімен қалай іске қосу керек).
Сценарий ұзақ операциялар кезінде уақытты қысқартады - мысалы, файлдарды FTP арқылы көшіру. Көшіру аяқталғаннан кейін сценарий бірден жұмыс істей бастайды. Адам көшірудің соңын көруі керек, содан кейін көшірудің соңын түсініп, сәйкес пәрмендерді енгізу керек. Сценарий мұны объективті түрде тезірек жасайды.
Деректерді жаппай жеткізу құралдарын пайдалану мүмкін болмаған жағдайда сценарийлер қолданылады: Консоль. Немесе жабдықтың кейбір деректері бірегей болған кезде: хост атауы, басқару IP мекенжайы. Немесе бағдарламаны жазу және жөндеу кезінде сценарий жұмыс істеп тұрған кезде жабдықтан алынған деректерді қосудан қиынырақ. - Әрбір жабдықтың Интернет провайдерінің жеке IP мекенжайы болған кезде маршрутты белгілеу сценарийі бар мысал. (Менің әріптестерім осындай сценарийлерді жазды - DMVPN сөйлеген кезде 3-ден жоғары болды. DMVPN параметрлерін өзгерту қажет болды).
Жағдайды зерттеу: консоль порттарын пайдаланып жаңа коммутатордағы бастапқы параметрлерді конфигурациялау:
A. Консоль кабелін құрылғыға қосыңыз.
B. Сценарийді іске қосыңыз
B. Сценарийдің орындалуын күтті
D. Консоль кабелін келесі құрылғыға қосыңыз.
E. Егер қосқыш соңғысы болмаса, B қадамына өтіңіз.
Сценарий жұмысының нәтижесінде:
бастапқы құпия сөз жабдықта орнатылған.
Пайдаланушы аты енгізілді
құрылғының бірегей IP мекенжайы енгізіледі.
PS операцияны қайталау керек болды. Өйткені әдепкі ssh конфигурацияланбаған/өшірілмеген. (Иә, бұл менің қателігім.)
Екі сұрауы бар ұзын сценарийдің мысалы: хост атауы және IP мекенжайы. Ол консоль арқылы жабдықты алдын ала орнату үшін жасалған (9600 бад). Сондай-ақ жабдықты желіге қосуды дайындау.
Мұндай сценарийлер әдетте қажет емес, бірақ жабдықтың саны 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 операциялық жүйелерінде жұмыс істейді.
Сценарий қолдауы бар (осы мақала)
бар Пәрмен терезесі
Сериялық/Telnet/SSH1/SSH2/Shell операциялық жүйесі