Skriptlar yordamida SecureCRT-ga kirishni avtomatlashtirish
Tarmoq muhandislari ko'pincha bloknotdan konsolga ma'lum qismlarni nusxalash/joylashtirish vazifasiga duch kelishadi. Odatda bir nechta parametrlarni nusxalashingiz kerak: foydalanuvchi nomi/parol va boshqa narsa. Skriptlardan foydalanish bu jarayonni tezlashtirish imkonini beradi. LEKIN skriptni yozish va skriptni bajarish vazifalari qo'lda konfiguratsiyaga qaraganda kamroq vaqt talab qilishi kerak, aks holda skriptlar foydasiz.
Ushbu maqola nima uchun? Ushbu maqola Fast Start seriyasidan bo'lib, bir nechta qurilmalarda uskunani (bitta vazifa) sozlashda tarmoq muhandislari vaqtini tejashga qaratilgan. SecureCRT dasturi va o'rnatilgan skriptni bajarish funksiyasidan foydalanadi. Mundarija
SecureCRT dasturida o'rnatilgan skriptni bajarish mexanizmi mavjud. Terminal skriptlari nima uchun?
Avtomatlashtirilgan kiritish-chiqarish va minimal kiritish-chiqarish tekshiruvi.
Muntazam vazifalarni bajarishni tezlashtirish - uskuna sozlamalari orasidagi pauzalarni kamaytirish. (Bir xil uskunada nusxa ko'chirish/o'tgan amallarni bajarish vaqti tufayli yuzaga kelgan pauzalarning amalda qisqarishi, apparatga qo'llanilishi kerak bo'lgan 3 yoki undan ortiq buyruq fragmentlari.)
Ushbu hujjat vazifalarni o'z ichiga oladi:
Oddiy skriptlarni yaratish.
SecureCRT-da skriptlarni ishga tushirish.
Oddiy va ilg'or skriptlardan foydalanishga misollar. (Haqiqiy hayotdan amaliyot.)
Oddiy skriptlarni yaratish.
Eng oddiy skriptlar faqat ikkita buyruqdan foydalanadi, Send va WaitForString. Ushbu funksionallik bajarilgan vazifalarning 90% (yoki undan ko'p) uchun etarli.
Skriptlar Python, JS, VBS (Visual Basic), Perl va boshqalarda ishlashi mumkin.
# $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
Odatda "*.vbs" kengaytmali fayl
Skript yozuvi yordamida skript yarating.
Skript yozish jarayonini avtomatlashtirish imkonini beradi. Siz skript yozishni boshlaysiz. SecureCRT buyruqlar va keyingi apparat javobini yozib oladi va siz uchun tayyor skriptni ko'rsatadi.
A. Skript yozishni boshlang:
SecureCRT Menyu => Skript => Yozishni boshlash
b. Konsol bilan amallarni bajaring (CLI da konfiguratsiya bosqichlarini bajaring).
V. Skript yozishni tugating:
SecureCRT menyusi => Skript => Skript yozishni to'xtatish…
Skript faylini saqlang.
Bajarilgan buyruqlar va saqlangan skriptga misol:
SecureCRT-da skriptlarni ishga tushirish.
Skriptni yaratish/tahrirlashdan keyin mantiqiy savol tug'iladi: skriptni qanday qo'llash kerak?
Bir necha yo'l bor:
Skript menyusidan qo'lda ishga tushirish
Ulanishdan keyin avtomatik ishga tushirish (kirish skripti)
Skriptdan foydalanmasdan avtomatik kirish
SecureCRT-dagi tugma yordamida qo'lda ishga tushirish (tugma hali yaratilmagan va SecureCRT-ga qo'shilmagan)
Skript menyusidan qo'lda ishga tushirish
SecureCRT menyusi => Skript => Ishga tushirish…
- Oxirgi 10 ta skriptlar eslab qolinadi va tezda ishga tushirilishi mumkin:
SecureCRT menyusi => Skript => 1 "Skript fayl nomi"
SecureCRT menyusi => Skript => 2 "Skript fayl nomi"
SecureCRT menyusi => Skript => 3 "Skript fayl nomi"
SecureCRT menyusi => Skript => 4 "Skript fayl nomi"
SecureCRT menyusi => Skript => 5 "Skript fayl nomi"
Ulanishdan keyin avtomatik ishga tushirish (kirish skripti)
Avtomatik jurnalga yozish skripti sozlamalari saqlangan seans uchun sozlangan: Ulanish => Tizimga kirish harakatlari => Tizimga kirish skripti
Skriptdan foydalanmasdan avtomatik kirish
Faqat SecureCRT-ning o'rnatilgan funksiyasidan foydalanib, parolning foydalanuvchi nomini skript yozmasdan avtomatik ravishda kiritish mumkin. Ulanish sozlamalarida "Ulanish" => Tizimga kirish harakatlari => Tizimga kirishni avtomatlashtirish - siz bir nechta to'plamlarni to'ldirishingiz kerak - bu juftlikni anglatadi: "Kutilayotgan matn" + "Ushbu matnga yuborilgan belgilar" bunday juftliklar ko'p bo'lishi mumkin. (Masalan: 1-juft foydalanuvchi nomini kutmoqda, ikkinchisi parolni kutmoqda, uchinchisi imtiyozli rejim soʻrovini kutmoqda, toʻrtinchi juftlik imtiyozli rejim parolini kutmoqda.)
Cisco ASA da avtomatik tizimga kirishga misol:
SecureCRT-dagi tugma yordamida qo'lda ishga tushirish (tugma hali yaratilmagan va SecureCRT-ga qo'shilmagan)
SecureCRT-da siz tugmachaga skript belgilashingiz mumkin. Tugma bu maqsad uchun maxsus yaratilgan panelga qo'shiladi.
A. Interfeysga panel qo'shish: SecureCRT Menyu => Ko'rish => Tugma paneli
b. Panelga tugma qo'shing va skript qo'shing. - Tugma panelini o'ng tugmasini bosing va kontekst menyusidan "Yangi tugma ..." ni tanlang.
V. "Xarita tugmasi" muloqot oynasidagi "Harakat" maydonida "Skriptni ishga tushirish" amalini (funktsiyasini) tanlang.
Tugma uchun sarlavhani belgilang. Tugma belgisi uchun rang. OK tugmasini bosish orqali sozlamalarni tugating.
Eslatma:
Tugmalari bo'lgan panel juda foydali funksionallikdir.
1. Muayyan seansga kirganingizda, sukut bo'yicha ushbu yorliq uchun qaysi panelni ochishni belgilashingiz mumkin.
2. Uskunalar bilan standart harakatlar uchun oldindan belgilangan harakatlarni o'rnatish mumkin: versiyani ko'rsatish, run-configni ko'rsatish, konfiguratsiyani saqlash.
Ushbu tugmalarga hech qanday skript biriktirilmagan. Faqat harakatlar qatori:
Mijoz uchun Login uchun individual skriptlarni o'rnatish va sotuvchi uchun tez-tez buyruqlar bilan panelga o'tish mantiqan.
Go Cisco tugmasini bosganingizda panel Cisco tugmalar paneliga o'tadi.
Oddiy va ilg'or skriptlardan foydalanishga misollar. (Haqiqiy hayotdan amaliyot.)
Oddiy skriptlar deyarli barcha holatlar uchun etarli. Ammo bir marta skriptni biroz murakkablashtirishim kerak edi - ishni tezlashtirish uchun. Ushbu murakkablik faqat foydalanuvchidan dialog oynasida qo'shimcha ma'lumotlarni talab qildi.
Muloqot oynasi yordamida foydalanuvchidan ma'lumotlarni so'rash
Ma'lumotlar so'rovi skriptida menda 2 tasi bor edi. Bu hostname va IP manzilning 4-okteti. Ushbu amalni bajarish uchun - men buni qanday qilishni google-da qidirdim va uni SecureCRT (vandyke) rasmiy veb-saytida topdim. - funksionallik tezkor deb ataladi.
Skriptning ushbu qismi oxirgi oktetdagi Xost nomi va raqamlarini so'radi. Chunki 15 ta uskuna bor edi. Va ma'lumotlar jadvalda taqdim etildi, keyin men jadvaldan qiymatlarni ko'chirib, dialog oynalariga joylashtirdim. Keyinchalik skript mustaqil ravishda ishladi.
FTPni tarmoq uskunasiga nusxalash.
Ushbu skript mening buyruqlar oynasini (qobiq) ishga tushirdi va ma'lumotlarni FTP orqali nusxaladi. Oxirida sessiyani yoping. Buning uchun bloknotdan foydalanish mumkin emas, chunki nusxa ko'chirish juda uzoq vaqt talab etadi va FTP buferidagi ma'lumotlar uzoq vaqt davomida saqlanmaydi:
# $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()
Skript yordamida foydalanuvchi nomi/parolni kiritish
Bir mijozda tarmoq uskunasiga to'g'ridan-to'g'ri kirish yopildi. Uskunani dastlab Standart shlyuzga, undan keyin esa unga ulangan uskunaga ulash orqali kiritish mumkin edi. Ulanish uchun IOS/apparat dasturiga o'rnatilgan ssh mijozi ishlatilgan. Shunga ko'ra, foydalanuvchi nomi va parol konsolda so'ralgan. Quyidagi skript yordamida foydalanuvchi nomi va parol avtomatik ravishda kiritildi:
# $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()
Eslatma: 2 ta skript mavjud edi: biri administrator hisobi uchun, ikkinchisi eSIGHT hisobi uchun.
Skriptni bajarish paytida ma'lumotlarni to'g'ridan-to'g'ri qo'shish qobiliyatiga ega skript.
Vazifa barcha tarmoq uskunalarida statik marshrutni qo'shish edi. Ammo har bir uskunada Internetga kirish eshigi boshqacha edi (va u standart shlyuzdan farq qilar edi). Quyidagi skript marshrutlash jadvalini ko'rsatdi, konfiguratsiya rejimiga kirdi, buyruqni oxirigacha yozmadi (Internetga shlyuzning IP manzili) - men ushbu qismni qo'shdim. Enter tugmasini bosganimdan keyin skript buyruqni bajarishda davom etdi.
# $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()
Ushbu skriptda: crt.Screen.Send("ip route 10.10.10.8 255.255.255.252" qatorida shlyuzning IP manzili qo'shilmagan va vagonni qaytarish belgisi yo'q. Skript "(config) #" belgilar bilan keyingi qatorni kutmoqda Bu belgilar men IP manzilini kiritganimdan va kiritganimdan keyin paydo bo'ldi.
Xulosa:
Skriptni yozish va uni bajarishda qoidaga amal qilish kerak: Skript yozish va skriptni bajarish vaqti hech qachon nazariy jihatdan bir xil ishni qo'lda bajarishga sarflangan vaqtdan ko'p bo'lmasligi kerak (bloknotdan nusxa ko'chirish / joylashtirish, yozish va disk raskadrovka). python skriptini tushunish, yozish va tuzatish uchun o'yin kitobi). Ya'ni, skriptdan foydalanish vaqtni tejash va jarayonlarni bir martalik avtomatlashtirishga vaqtni behuda sarflamasligi kerak (ya'ni, skript noyob bo'lsa va boshqa takrorlash bo'lmaydi). Ammo agar skript noyob bo'lsa va skript bilan avtomatlashtirish va skriptni yozish/disk raskadrovka qilish uni boshqa usulda bajarishdan ko'ra kamroq vaqt talab qilsa (aniq, buyruq oynasi), u holda skript eng yaxshi echimdir.
Skriptni disk raskadrovka qilish. Skript asta-sekin o'sib boradi, disk raskadrovka birinchi, ikkinchi, uchinchi qurilmada ishga tushirilganda amalga oshiriladi va to'rtinchisida skript to'liq ishlaydi.
Sichqoncha bilan skriptni ishga tushirish (foydalanuvchi nomi+parolni kiritish orqali) odatda bloknotdan foydalanuvchi nomi va parolni nusxalashdan ko'ra tezroq. Lekin xavfsizlik nuqtai nazaridan xavfsiz emas.
Skriptni ishlatishda yana bir (haqiqiy) misol: Sizda tarmoq uskunasiga to'g'ridan-to'g'ri kirish imkoni yo'q. Ammo barcha tarmoq uskunalarini sozlash kerak (uni monitoring tizimiga olib keling, qo'shimcha foydalanuvchi nomi/parol/snmpv3username/parolni sozlang). Yadro kalitiga kirganingizda kirish mavjud, undan SSH-ni boshqa jihozlarga ochasiz. Nega Ansible-dan foydalana olmaysiz? - Chunki biz tarmoq uskunalarida bir vaqtning o'zida ruxsat etilgan seanslar soni bo'yicha cheklovga duch keldik (liniya vty 0 4, foydalanuvchi interfeysi vty 0 4) (yana bir savol Ansible'da bir xil SSH birinchi hop bilan turli xil uskunalarni qanday ishga tushirish kerak).
Skript uzoq operatsiyalar davomida vaqtni qisqartiradi - masalan, FTP orqali fayllarni nusxalash. Nusxalash tugallangach, skript darhol ishlay boshlaydi. Biror kishi nusxa ko'chirishning oxirini ko'rishi, keyin nusxa ko'chirishning oxirini tushunishi, keyin tegishli buyruqlarni kiritishi kerak. Skript buni ob'ektiv ravishda tezroq bajaradi.
Skriptlar ommaviy ma'lumotlarni uzatish vositalaridan foydalanish mumkin bo'lmagan hollarda qo'llaniladi: Konsol. Yoki uskuna uchun ba'zi ma'lumotlar noyob bo'lsa: xost nomi, boshqaruv IP manzili. Yoki dastur yozishda va disk raskadrovka qilish skript ishlayotgan vaqtda uskunadan olingan ma'lumotlarni qo'shishdan ko'ra qiyinroq. - Har bir uskunada Internet-provayderning o'z IP-manzili bo'lsa, marshrutni belgilash uchun skriptga misol. (Mening hamkasblarim shunday skriptlarni yozishgan - DMVPN gapirganda 3 dan oshgan. DMVPN sozlamalarini o'zgartirish kerak edi).
Case Study: Konsol portlari yordamida yangi kommutatorda dastlabki sozlamalarni sozlash:
A. Konsol kabelini qurilmaga ulang.
B. Skriptni ishga tushiring
B. Ssenariyning bajarilishini kutdi
D. Konsol kabelini keyingi qurilmaga ulang.
E. Agar kalit oxirgi bo'lmasa, B bosqichiga o'ting.
Skript ishi natijasida:
dastlabki parol uskunada o'rnatiladi.
Foydalanuvchi nomi kiritildi
qurilmaning noyob IP manzili kiritiladi.
PS operatsiyani takrorlash kerak edi. Chunki standart ssh sozlanmagan/o'chirilgan. (Ha, bu mening xatoim.)
Ikkita so'rovli uzun skriptga misol: Xost nomi va IP manzili. U uskunani konsol orqali oldindan sozlash uchun yaratilgan (9600 bod). Shuningdek, uskunani tarmoqqa ulashni tayyorlash.
Bunday skriptlar odatda kerak emas, lekin uskunalar miqdori 15 dona. Tezroq sozlashga ruxsat berilgan. SecureCRT buyrug'i oynasi yordamida uskunani sozlash tezroq bo'ldi.
Ssh uchun hisob o'rnatish.
Yana bir misol. Konfiguratsiya ham konsol orqali amalga oshiriladi.
# $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 haqida:Pullik dasturiy ta'minot: $99 dan (eng kichik narx faqat SecureCRT uchun bir yilga) Grant rasmiy veb-sayti
Dasturiy ta'minot litsenziyasi qo'llab-quvvatlash bilan (yangilash uchun) bir marta sotib olinadi, so'ngra dasturiy ta'minot ushbu litsenziya bilan cheklanmagan vaqt davomida ishlatiladi.
Mac OS X va Windows operatsion tizimlarida ishlaydi.
Skriptni qo'llab-quvvatlash mavjud (ushbu maqola)
bor Buyruqlar oynasi
Serial/Telnet/SSH1/SSH2/Shell operatsion tizimi