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

Giriş

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.

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()

Adətən "*.py" uzantısı olan bir fayl

VBS

# $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:

Skriptlərdən istifadə edərək SecureCRT-də girişin avtomatlaşdırılması

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)

Skript menyusundan əl ilə işə salın

SecureCRT Menyu => Skript => Çalıştır...
- Son 10 skript yadda qalıb və tez işə salına bilər:
SecureCRT menyusu => Skript => 1 "Skript fayl adı"
SecureCRT menyusu => Skript => 2 "Skript fayl adı"
SecureCRT menyusu => Skript => 3 "Skript fayl adı"
SecureCRT menyusu => Skript => 4 "Skript fayl adı"
SecureCRT menyusu => Skript => 5 "Skript fayl adı"

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

Skriptlərdən istifadə edərək SecureCRT-də girişin avtomatlaşdırılması

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:

Skriptlərdən istifadə edərək SecureCRT-də girişin avtomatlaşdırılması

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.

Skriptlərdən istifadə edərək SecureCRT-də girişin avtomatlaşdırılması

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.

Skriptlərdən istifadə edərək SecureCRT-də girişin avtomatlaşdırılması
Bu düymələrə heç bir skript əlavə edilmir. Yalnız fəaliyyət xətti:

Skriptlərdən istifadə edərək SecureCRT-də girişin avtomatlaşdırılması
Parametr - seansa keçərkən seans parametrlərində düymələri olan lazımi panelin açılması üçün:

Skriptlərdən istifadə edərək SecureCRT-də girişin avtomatlaşdırılması
Müştərinin Login üçün fərdi skriptlər qurması və satıcı üçün tez-tez əmrləri olan panelə getməsi məntiqlidir.

Skriptlərdən istifadə edərək SecureCRT-də girişin avtomatlaşdırılması
Go Cisco düyməsini basdığınız zaman panel Cisco Button Bar-a keçir.

Skriptlərdən istifadə edərək SecureCRT-də girişin avtomatlaşdırılması

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.

	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") 

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()

Qeyd: 2 skript var idi.Biri administrator hesabı, ikincisi eSIGHT hesabı üçün.

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.)

İstifadə olunan mənbələr.

1. Skriptlərin yaradılması haqqında
2. Skript nümunələri

Əlavə 1: Nümunə skriptlər.


İ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.

# $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()

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

Mənbə: www.habr.com