ProHoster > Blog > İdarə > Skriptlərdən istifadə edərək SecureCRT-də girişin avtomatlaşdırılması
Skriptlərdən istifadə edərək SecureCRT-də girişin avtomatlaşdırılması
Şəbəkə mühəndisləri tez-tez müəyyən fraqmentləri bloknotdan konsola köçürmək/yapışdırmaq vəzifəsi ilə üzləşirlər. Adətən bir neçə parametri kopyalamalısınız: İstifadəçi adı/Parol və başqa bir şey. Skriptlərdən istifadə bu prosesi sürətləndirməyə imkan verir. AMMA skriptin yazılması və skriptin icrası tapşırıqları əl ilə konfiqurasiyadan daha az vaxt aparmalıdır, əks halda skriptlər faydasızdır.
Bu məqalə nə üçündür? Bu məqalə Sürətli Başlanğıc seriyasındandır və bir çox cihazda avadanlıq (tək tapşırıq) qurarkən şəbəkə mühəndislərinin vaxtına qənaət etmək məqsədi daşıyır. SecureCRT proqram təminatından və daxili skript icra funksiyasından istifadə edir. Məzmun
SecureCRT proqramı qutudan kənarda daxili skript icra mexanizminə malikdir. Terminal skriptləri nə üçündür?
Avtomatlaşdırılmış I/O və minimal I/O təsdiqi.
Rutin tapşırıqların icrasını sürətləndirin - avadanlıq parametrləri arasında fasilələri azaldın. (Avadanlığa tətbiq ediləcək 3 və ya daha çox əmr fraqmenti ilə eyni aparatda kopyalama/keçmiş əməliyyatları yerinə yetirmək üçün vaxtın səbəb olduğu fasilələrin faktiki olaraq azalması.)
Bu sənəd vəzifələri əhatə edir:
Sadə skriptlərin yaradılması.
SecureCRT-də skriptlərin işlədilməsi.
Sadə və təkmil skriptlərdən istifadə nümunələri. (Real həyatdan təcrübə edin.)
Sadə skriptlərin yaradılması.
Ən sadə skriptlər yalnız iki əmrdən istifadə edir, Göndər və WaitForString. Bu funksionallıq yerinə yetirilən tapşırıqların 90%-i (və ya daha çoxu) üçün kifayətdir.
Skriptlər Python, JS, VBS (Visual Basic), Perl və s.-də işləyə bilər.
# $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
Adətən "*.vbs" uzantılı fayldır.
Skript girişindən istifadə edərək skript yaradın.
Skript yazmaq prosesini avtomatlaşdırmağa imkan verir. Ssenari yazmağa başlayırsan. SecureCRT əmrləri və sonrakı aparat cavabını qeyd edir və sizin üçün hazır skripti göstərir.
A. Skript yazmağa başlayın:
SecureCRT Menyu => Skript => Skript yazmağa başlayın
b. Konsolla hərəkətləri yerinə yetirin (CLI-də konfiqurasiya addımlarını yerinə yetirin).
V. Ssenari yazmağı bitirin:
SecureCRT Menyu => Skript => Skripti qeyd etməyi dayandır...
Skript faylını yadda saxlayın.
İcra edilmiş əmrlərin və saxlanan skriptin nümunəsi:
SecureCRT-də skriptlərin işlədilməsi.
Skripti yaratdıqdan/redaktə etdikdən sonra məntiqi sual yaranır: Skripti necə tətbiq etmək olar?
Bir neçə yol var:
Skript menyusundan əl ilə işə salın
Qoşulduqdan sonra avtomatik başlanğıc (giriş skripti)
Skriptdən istifadə etmədən avtomatik giriş
SecureCRT-də bir düymə ilə əl ilə tetikleme (düymə hələ yaradılmalı və SecureCRT-ə əlavə edilməlidir)
Qoşulduqdan sonra avtomatik başlanğıc (giriş skripti)
Avtomatik giriş skripti parametrləri yadda saxlanmış sessiya üçün konfiqurasiya edilmişdir: Bağlantı => Daxil olma hərəkətləri => Daxil olma skripti
Skriptdən istifadə etmədən avtomatik giriş
Yalnız SecureCRT-in daxili funksionallığından istifadə edərək, skript yazmadan parolun istifadəçi adını avtomatik daxil etmək mümkündür. Bağlantı parametrlərində "Bağlantı" => Daxil olma hərəkətləri => Daxil olmağı avtomatlaşdırın - bir neçə paketi doldurmalısınız - bu cütlər deməkdir: "Gözlənilən mətn" + "Bu mətnə göndərilən simvollar" belə cütlər çox ola bilər. (Məsələn: 1-ci cüt istifadəçi adını gözləyir, ikincisi parolu gözləyir, üçüncüsü imtiyazlı rejim sorğusunu gözləyir, dördüncü cüt imtiyazlı rejim parolunu gözləyir.)
Cisco ASA-da avtomatik giriş nümunəsi:
SecureCRT-də bir düymə ilə əl ilə tetikleme (düymə hələ yaradılmalı və SecureCRT-ə əlavə edilməlidir)
SecureCRT-də bir düyməyə skript təyin edə bilərsiniz. Düymə bu məqsəd üçün xüsusi olaraq yaradılmış panelə əlavə edilir.
A. Panelin interfeysə əlavə edilməsi: SecureCRT Menyu => Görünüş => Düymə Paneli
b. Panelə bir düymə əlavə edin və skript əlavə edin. – Düymə çubuğuna sağ klikləyin və kontekst menyusundan “Yeni düymə…” seçin.
V. "Xəritə düyməsi" dialoq qutusunda "Fəaliyyət" sahəsində "Skripti işlət" hərəkətini (funksiyasını) seçin.
Düymə üçün başlıq təyin edin. Düymə ikonasının rəngi. Ok düyməsini klikləməklə parametrləri tamamlayın.
Qeyd:
Düymələri olan panel çox faydalı funksionallıqdır.
1. Müəyyən bir seansa daxil olarkən, defolt olaraq bu tab üçün hansı panelin açılacağını müəyyən etmək mümkündür.
2. Avadanlıq ilə standart hərəkətlər üçün əvvəlcədən təyin edilmiş hərəkətləri təyin etmək mümkündür: versiyanı göstər, çalışan-konfiquranı göstər, konfiqurasiyanı saxla.
Bu düymələrə heç bir skript əlavə edilmir. Yalnız fəaliyyət xətti:
Parametr - seansa keçərkən seans parametrlərində düymələri olan lazımi panelin açılması üçün:
Müştərinin Login üçün fərdi skriptlər qurması və satıcı üçün tez-tez əmrləri olan panelə getməsi məntiqlidir.
Go Cisco düyməsini basdığınız zaman panel Cisco Button Bar-a keçir.
Sadə və təkmil skriptlərdən istifadə nümunələri. (Real həyatdan təcrübə edin.)
Sadə skriptlər demək olar ki, bütün hallar üçün kifayətdir. Ancaq bir dəfə ssenarini bir az çətinləşdirməli oldum - işi sürətləndirmək üçün. Bu mürəkkəblik sadəcə istifadəçidən dialoq qutusunda əlavə məlumat tələb etdi.
Dialoq qutusundan istifadə edərək istifadəçidən məlumat tələb etmək
Məlumat sorğusu skriptində 2 var idi.Bu Hostname və IP ünvanının 4-cü oktetidir. Bu hərəkəti yerinə yetirmək üçün - mən bunu necə edəcəyimi google-da axtardım və SecureCRT (vandyke) rəsmi saytında tapdım. - funksionallıq operativ adlanır.
Skriptin bu hissəsi son oktetdən Host adı və nömrələri istədi. Çünki orada 15 ədəd avadanlıq var idi. Və məlumatlar cədvəldə təqdim edildi, sonra dəyərləri cədvəldən kopyaladım və dialoq qutularına yapışdırdım. Daha sonra skript müstəqil işləyirdi.
FTP-nin şəbəkə avadanlığına kopyalanması.
Bu skript mənim əmr pəncərəmi (qabıq) işə saldı və məlumatları FTP vasitəsilə kopyaladı. Sonda sessiyanı bağlayın. Bunun üçün notepaddan istifadə etmək qeyri-mümkündür, çünki surət çıxarmaq çox vaxt aparır və FTP buferindəki məlumatlar o qədər uzun müddət saxlanmayacaq:
# $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()
Skriptdən istifadə edərək istifadəçi adının/parolun daxil edilməsi
Bir müştəridə şəbəkə avadanlığına birbaşa giriş bağlanıb. Əvvəlcə Defolt Gateway-ə, oradan isə ona qoşulmuş avadanlıqlara qoşulmaqla avadanlıqlara daxil olmaq mümkün idi. Qoşulmaq üçün IOS/hardware proqram təminatına daxil edilmiş ssh müştəri istifadə edilmişdir. Müvafiq olaraq, istifadəçi adı və şifrə konsolda tələb olundu. Aşağıdakı skriptlə istifadəçi adı və parol avtomatik olaraq daxil edildi:
# $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()
Skript icrası zamanı birbaşa məlumat əlavə etmək imkanı olan skript.
Vəzifə bütün şəbəkə avadanlıqlarına statik marşrut əlavə etmək idi. Ancaq hər bir avadanlıqda İnternetə giriş qapısı fərqli idi (və standart şlüzdən fərqlənirdi). Aşağıdakı skript marşrutlaşdırma cədvəlini göstərdi, konfiqurasiya rejiminə girdi, əmri sona qədər yazmadı (İnternetə giriş qapısının IP ünvanı) - bu hissəni əlavə etdim. Mən Enter düyməsini basdıqdan sonra skript əmri yerinə yetirməyə davam 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()
Bu skriptdə, crt.Screen.Send("ip marşrutu 10.10.10.8 255.255.255.252") sətirində şlüzün IP ünvanı əlavə edilməyib və daşınma simvolu yoxdur. Skript "(config) #" simvolları ilə növbəti sətri gözləyir Bu simvollar mən ip ünvanını daxil edib daxil olduqdan sonra ortaya çıxdı.
Nəticə:
Skript yazarkən və onu yerinə yetirərkən qaydaya əməl edilməlidir: Skriptin yazılması və skriptin icrası üçün vaxt heç vaxt nəzəri olaraq eyni işi əl ilə yerinə yetirməyə sərf olunan vaxtdan çox olmamalıdır (nonot dəftərindən kopyalama/yapışdırmaq, yazı və sazlama). python skriptini oxumaq, yazmaq və aradan qaldırmaq üçün oyun kitabı). Yəni, skriptin istifadəsi vaxta qənaət etməlidir və proseslərin birdəfəlik avtomatlaşdırılmasına vaxt itirməməlidir (yəni, skript unikal olduqda və daha çox təkrar olmayacaq). Lakin skript unikaldırsa və skriptlə avtomatlaşdırma və skriptin yazılması/bağlanması bunu başqa bir şəkildə etməkdən daha az vaxt tələb edirsə (anlamlı, əmr pəncərəsi), onda skript ən yaxşı həll yoludur.
Skriptin sazlanması. Skript tədricən böyüyür, sazlama birinci, ikinci, üçüncü cihazda işə salınır və dördüncü ilə skript çox güman ki, tam işləyəcək.
Skripti (istifadəçi adı+parol daxil etməklə) siçan ilə icra etmək adətən istifadəçi adı və şifrəni notepaddan kopyalamaqdan daha sürətli olur. Amma təhlükəsizlik baxımından təhlükəsiz deyil.
Skriptdən istifadə edərkən başqa (real) nümunə: Sizin şəbəkə avadanlıqlarına birbaşa çıxışınız yoxdur. Lakin bütün şəbəkə avadanlıqlarının konfiqurasiyasına ehtiyac var (onu monitorinq sisteminə gətirin, əlavə İstifadəçi adı/parol/snmpv3username/parol konfiqurasiya edin). Core keçidinə keçdiyiniz zaman giriş var, ondan SSH-ni digər avadanlıqlara açırsınız. Niyə Ansible istifadə edə bilmirsiniz? - Çünki biz şəbəkə avadanlığında icazə verilən eyni vaxtda seansların sayı ilə bağlı məhdudiyyətlə qarşılaşırıq (sətir vty 0 4, istifadəçi interfeysi vty 0 4) (başqa bir sual Ansible-da eyni SSH ilk hop ilə müxtəlif avadanlıqları necə işə salmaqdır).
Skript uzun əməliyyatlar zamanı vaxtı azaldır - məsələn, FTP vasitəsilə faylların kopyalanması. Kopyalama tamamlandıqdan sonra skript dərhal işə başlayır. Bir şəxs kopyalamanın sonunu görməli, sonra köçürmənin sonunu başa düşməli, sonra müvafiq əmrləri daxil etməlidir. Skript bunu obyektiv olaraq daha sürətli edir.
Kütləvi məlumat ötürmə vasitələrindən istifadə etmək mümkün olmayan yerlərdə skriptlər tətbiq olunur: Konsol. Və ya avadanlıq üçün bəzi məlumatlar unikal olduqda: host adı, idarəetmə ip ünvanı. Və ya proqram yazarkən və sazlayarkən skript işləyərkən avadanlıqdan alınan məlumatları əlavə etməkdən daha çətindir. - Hər bir avadanlığın İnternet provayderinin öz IP ünvanı olduqda marşrut təyin etmək üçün skriptlə nümunə. (Mənim həmkarlarım belə skriptlər yazırdılar - DMVPN danışan zaman 3-dən yuxarı idi. DMVPN parametrlərini dəyişmək lazım idi).
Case Study: Konsol portlarından istifadə edərək yeni keçiddə ilkin parametrlərin konfiqurasiyası:
A. Konsol kabelini cihaza qoşun.
B. Skripti işə salın
B. Ssenarinin icrasını gözlədi
D. Konsol kabelini növbəti cihaza qoşun.
E. Əgər keçid sonuncu deyilsə, B addımına keçin.
Ssenari işinin nəticəsi olaraq:
ilkin parol avadanlıqda müəyyən edilir.
İstifadəçi adı daxil edildi
cihazın unikal IP ünvanı daxil edilir.
PS əməliyyatı təkrarlamaq lazım idi. Çünki Defolt ssh konfiqurasiya edilmədi/deaktiv edilmədi. (Bəli, bu mənim səhvimdir.)
İki sorğu ilə uzun skriptin nümunəsi: Host adı və IP ünvanı. O, konsol vasitəsilə avadanlığın əvvəlcədən qurulması üçün yaradılmışdır (9600 baud). Həm də avadanlıqların şəbəkəyə qoşulmasını hazırlamaq.
Belə skriptlər ümumiyyətlə lazım deyil, lakin avadanlıqların miqdarı 15 ədəddir. Daha sürətli quraşdırmaya icazə verilir. SecureCRT Command pəncərəsindən istifadə edərək avadanlığı qurmaq daha sürətli idi.
ssh üçün hesabın qurulması.
Başqa bir misal. Konfiqurasiya da konsol vasitəsilə həyata keçirilir.
# $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 haqqında:Ödənişli proqram təminatı: $99-dan (ən kiçik qiymət yalnız bir il üçün SecureCRT üçündir) Rəsmi saytında
Proqram təminatı lisenziyası bir dəfə dəstəyi ilə (yeniləmə üçün) alınır, sonra proqram bu lisenziya ilə qeyri-məhdud müddətə istifadə olunur.
Mac OS X və Windows əməliyyat sistemlərində işləyir.
Skript dəstəyi var (bu məqalə)
Yoxdur Komanda pəncərəsi
Serial/Telnet/SSH1/SSH2/Shell Əməliyyat Sistemi