Komut Dosyalarını Kullanarak SecureCRT'de Girişi Otomatikleştirme

Ağ mühendisleri genellikle belirli parçaları bir not defterinden konsola kopyalama/yapıştırma göreviyle karşı karşıya kalır. Genellikle birkaç parametreyi kopyalamanız gerekir: Kullanıcı Adı/Parola ve başka bir şey. Komut dosyalarının kullanılması bu işlemi hızlandırmanızı sağlar. ANCAK komut dosyasını yazma ve yürütme görevleri, toplamda manuel yapılandırmadan daha az zaman almalıdır, aksi takdirde komut dosyaları işe yaramaz.

Bu makale ne için? Bu makale, Hızlı Başlangıç ​​serisindendir ve ağ mühendislerinin birden fazla cihazda ekipman kurarken (tek görev) zaman kazanmalarını amaçlamaktadır. SecureCRT yazılımını ve yerleşik betik yürütme işlevini kullanır.

Içerik

Giriş

SecureCRT programı, kutudan çıkar çıkmaz yerleşik bir komut dosyası yürütme mekanizmasına sahiptir. Terminal betikleri ne içindir?

  • Otomatik G/Ç ve minimum G/Ç doğrulaması.
  • Rutin görevlerin yürütülmesini hızlandırın - ekipman ayarları arasındaki duraklamaları azaltın. (Donanıma uygulanacak 3 veya daha fazla komut parçası ile aynı donanım üzerinde kopyalama/geçmiş eylemleri gerçekleştirmek için zamanın neden olduğu duraklamaların fiilen azaltılması.)

Bu belge şu görevleri kapsar:

  • Basit betiklerin oluşturulması.
  • SecureCRT'de betik çalıştırma.
  • Basit ve gelişmiş betikleri kullanma örnekleri. (Gerçek hayattan pratik yapın.)

Basit betiklerin oluşturulması.

En basit betikler yalnızca iki komut kullanır: Send ve WaitForString. Bu işlevsellik, gerçekleştirilen görevlerin %90'ı (veya daha fazlası) için yeterlidir.

Komut dosyaları Python, JS, VBS (Visual Basic), Perl vb. dillerinde çalışabilir.

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

Genellikle "*.py" uzantılı bir dosya

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

Genellikle "*.vbs" uzantılı bir dosya

Bir betik girdisi kullanarak bir betik oluşturun.

Bir komut dosyası yazma işlemini otomatikleştirmenizi sağlar. Bir senaryo yazmaya başlıyorsunuz. SecureCRT, komutları ve müteakip donanım yanıtını kaydeder ve sizin için tamamlanmış komut dosyasını görüntüler.

A. Komut dosyası yazmaya başlayın:
SecureCRT Menüsü => Komut Dosyası => Komut Dosyasını Kaydetmeye Başlayın
B. Konsolla eylemler gerçekleştirin (CLI'de yapılandırma adımlarını gerçekleştirin).
V. Komut dosyasını yazmayı bitirin:
SecureCRT Menüsü => Komut Dosyası => Komut Dosyasını Kaydetmeyi Durdur…
Komut dosyası dosyasını kaydedin.

Yürütülen komutlar ve kaydedilmiş komut dosyası örneği:

Komut Dosyalarını Kullanarak SecureCRT'de Girişi Otomatikleştirme

SecureCRT'de betik çalıştırma.

Komut dosyasını oluşturduktan/düzenledikten sonra doğal olarak bir soru ortaya çıkıyor: Komut dosyası nasıl uygulanır?
Birkaç yol var:

  • Komut Dosyası menüsünden manuel olarak çalıştırma
  • Bağlantıdan sonra otomatik başlatma (oturum açma komut dosyası)
  • Komut dosyası kullanmadan otomatik oturum açma
  • SecureCRT'de bir düğme ile manuel olarak tetikleme (henüz bir düğme oluşturulup SecureCRT'ye eklenmemiştir)

Komut Dosyası menüsünden manuel olarak çalıştırma

SecureCRT Menüsü => Komut Dosyası => Çalıştır…
- Son 10 komut dosyası hatırlanır ve hızlı başlatma için kullanılabilir:
SecureCRT menüsü => Komut Dosyası => 1 "Komut dosya adı"
SecureCRT menüsü => Komut Dosyası => 2 "Komut dosya adı"
SecureCRT menüsü => Komut Dosyası => 3 "Komut dosya adı"
SecureCRT menüsü => Komut Dosyası => 4 "Komut dosya adı"
SecureCRT menüsü => Komut Dosyası => 5 "Komut dosya adı"

Bağlantıdan sonra otomatik başlatma (oturum açma komut dosyası)

Kaydedilen oturum için otomatik günlük kaydı komut dosyası ayarları yapılandırılır: Bağlantı => Oturum Açma Eylemleri => Oturum açma komut dosyası

Komut Dosyalarını Kullanarak SecureCRT'de Girişi Otomatikleştirme

Komut dosyası kullanmadan otomatik oturum açma

Yalnızca SecureCRT'nin yerleşik işlevselliğini kullanarak, bir komut dosyası yazmadan parolanın kullanıcı adını otomatik olarak girmek mümkündür. “Bağlantı” => Oturum Açma İşlemleri => Otomatik oturum açma bağlantı ayarlarında - birkaç demet doldurmanız gerekir - bu, çiftler anlamına gelir: "Beklenen metin" + "Bu metne gönderilen karakterler", bu tür birçok çift olabilir. (Örnek: 1. çift kullanıcı adını bekliyor, ikincisi parola bekliyor, üçüncü çift ayrıcalıklı mod istemini bekliyor, dördüncü çift ayrıcalıklı mod parolasını bekliyor.)

Cisco ASA'da otomatik oturum açma örneği:

Komut Dosyalarını Kullanarak SecureCRT'de Girişi Otomatikleştirme

SecureCRT'de bir düğme ile manuel olarak tetikleme (henüz bir düğme oluşturulup SecureCRT'ye eklenmemiştir)

SecureCRT'de bir butona komut dosyası atayabilirsiniz. Düğme, bu amaç için özel olarak oluşturulmuş bir panele eklenir.

A. Arayüze panel ekleme: SecureCRT Menüsü => Görünüm => Düğme Çubuğu
B. Panele bir düğme ekleyin ve bir komut dosyası ekleyin. – Düğme Çubuğuna sağ tıklayın ve içerik menüsünden “Yeni düğme…” öğesini seçin.
V. "Harita Düğmesi" iletişim kutusunda, "Eylem" alanında "Komut Dosyasını Çalıştır" eylemini (işlevi) seçin.
Düğme için bir başlık belirtin. Düğme simgesinin rengi. Tamam'ı tıklayarak ayarları tamamlayın.

Komut Dosyalarını Kullanarak SecureCRT'de Girişi Otomatikleştirme

Not:

Düğmeli panel çok kullanışlı bir işlevselliktir.

1. Belirli bir oturumda Oturum Açıldığında, varsayılan olarak bu sekmeye hangi panelin açılacağını belirtmek mümkündür.

2. Ekipmanla standart eylemler için önceden tanımlanmış eylemler ayarlamak mümkündür: sürümü göster, çalışan yapılandırmayı göster, yapılandırmayı kaydet.

Komut Dosyalarını Kullanarak SecureCRT'de Girişi Otomatikleştirme
Bu düğmelere herhangi bir komut dosyası eklenmemiştir. Yalnızca işlem satırı:

Komut Dosyalarını Kullanarak SecureCRT'de Girişi Otomatikleştirme
Ayar - böylece bir oturuma geçerken, oturum ayarlarında düğmeli gerekli panel açılır:

Komut Dosyalarını Kullanarak SecureCRT'de Girişi Otomatikleştirme
Müşterinin Login için bireysel komut dizileri oluşturması ve satıcı için sık komutlarla panele gitmesi mantıklıdır.

Komut Dosyalarını Kullanarak SecureCRT'de Girişi Otomatikleştirme
Go Cisco düğmesine bastığınızda, panel Cisco Düğme Çubuğuna geçer.

Komut Dosyalarını Kullanarak SecureCRT'de Girişi Otomatikleştirme

Basit ve gelişmiş betikleri kullanma örnekleri. (Gerçek hayattan pratik yapın.)

Basit komut dosyaları neredeyse tüm durumlar için yeterlidir. Ama bir kez, işi hızlandırmak için senaryoyu biraz karmaşıklaştırmam gerekiyordu. Bu karmaşıklık, yalnızca kullanıcıdan bir iletişim kutusunda ek veri talep etti.

Bir iletişim kutusu kullanarak kullanıcıdan veri talep etme

Veri istek komut dosyasında 2 vardı.Bu, Ana Bilgisayar adı ve IP adresinin 4. sekizlisidir. Bu eylemi gerçekleştirmek için - Google'da nasıl yapılacağını araştırdım ve SecureCRT'nin (vandyke) resmi web sitesinde buldum. - işlevsellik bilgi istemi olarak adlandırılı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") 

Komut dosyasının bu kısmı, Ana Bilgisayar adını ve son sekizliden numaralar istedi. 15 adet ekipman olduğundan beri. Ve veriler bir tabloda sunuldu, ardından değerleri tablodan kopyalayıp iletişim kutularına yapıştırdım. Ayrıca senaryo bağımsız olarak çalıştı.

Ağ ekipmanına FTP kopyalama.

Bu komut dosyası, komut penceremi (kabuk) başlattı ve verileri FTP aracılığıyla kopyaladı. Sonunda, oturumu kapatın. Bunun için not defteri kullanmak imkansızdır, çünkü kopyalama çok uzun zaman alır ve FTP arabelleğindeki veriler o kadar uzun süre saklanmaz:

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

Bir komut dosyası kullanarak kullanıcı adı/şifre girme

Bir müşterinin doğrudan ağ ekipmanına erişimi kapatıldı. Önce Default Gateway'e, oradan da ona bağlı ekipmana bağlanarak ekipmana girmek mümkündü. Bağlanmak için IOS/donanım yazılımında yerleşik ssh istemcisi kullanıldı. Buna göre konsolda kullanıcı adı ve şifre istendi. Aşağıdaki script ile kullanıcı adı ve şifre otomatik olarak girilmiştir:

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

Not: 2 komut dosyası vardı, biri yönetici hesabı için, ikincisi eSIGHT hesabı için.

Komut dosyası yürütülürken verileri doğrudan ekleme yeteneğine sahip komut dosyası.

Görev, tüm ağ ekipmanına statik bir yol eklemekti. Ancak her ekipmandaki İnternet ağ geçidi farklıydı (ve varsayılan ağ geçidinden farklıydı). Aşağıdaki komut dosyası yönlendirme tablosunu gösterdi, yapılandırma moduna girdi, komutu sonuna kadar yazmadı (İnternet ağ geçidinin IP adresi) - bu kısmı ekledim. Enter'a bastıktan sonra komut dosyası komutu yürütmeye devam etti.

# $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 betikte crt.Screen.Send("ip route 10.10.10.8 255.255.255.252 ") satırında ağ geçidinin IP adresi eklenmez ve satır başı karakteri yoktur. Script "(config)#" karakterlerinin olduğu bir sonraki satırı bekliyor ip adresini girip girdikten sonra bu karakterler çıktı.

Sonuç:

Bir komut dosyası yazarken ve yürütürken şu kurala uyulmalıdır: Bir komut dosyası yazma ve bir komut dosyasını çalıştırma süresi, asla aynı işi manuel olarak yapmak için teorik olarak harcanan süreden fazla olmamalıdır (bir not defterinden kopyala/yapıştır, yazma ve hata ayıklama yanıtlayıcı, python komut dosyası yazma ve hata ayıklama için bir oyun kitabı). Yani, betiğin kullanımı zamandan tasarruf etmeli ve süreçlerin tek seferlik otomasyonunda zaman kaybetmemelidir (yani, komut dosyası benzersiz olduğunda ve daha fazla tekrar olmayacağında). Ancak komut dosyası benzersizse ve komut dosyasıyla otomasyon ve komut dosyasının yazılması/hatalarının ayıklanması, başka herhangi bir şekilde (ansible, komut penceresi) yapmaktan daha az zaman alıyorsa, komut dosyası en iyi çözümdür.
Bir komut dosyasında hata ayıklama. Komut dosyası kademeli olarak büyür, hata ayıklama birinci, ikinci, üçüncü cihazda alıştırma sırasında gerçekleşir ve dördüncü olarak komut dosyası büyük olasılıkla tamamen çalışır durumda olacaktır.

Fare ile bir betik çalıştırmak (kullanıcı adı+şifre girerek) genellikle Kullanıcı Adı ve Parolayı bir not defterinden kopyalamaktan daha hızlıdır. Ancak güvenlik açısından güvenli değil.
Komut dosyası kullanırken başka (gerçek) bir örnek: Ağ ekipmanına doğrudan erişiminiz yok. Ancak tüm ağ ekipmanlarını yapılandırmaya ihtiyaç vardır (izleme sistemine getirin, ek bir Kullanıcı Adı/şifre/snmpv3kullanıcı adı/şifre yapılandırın). Core anahtarına gittiğinizde erişim var, oradan SSH'yi diğer ekipmanlara açıyorsunuz. Ansible'ı neden kullanamıyorsun? - Ağ ekipmanında izin verilen eşzamanlı oturum sayısında bir sınırla karşılaştığımız için (vty 0 4 satırı, kullanıcı arayüzü vty 0 4) (başka bir soru, Ansible'da aynı SSH ilk atlama ile farklı ekipmanın nasıl başlatılacağıdır).

Komut dosyası, uzun işlemler sırasında zamanı azaltır - örneğin, dosyaların FTP yoluyla kopyalanması. Kopyalama tamamlandıktan sonra komut dosyası hemen çalışmaya başlar. Bir kişinin kopyalamanın sonunu görmesi, ardından kopyalamanın sonunu fark etmesi ve ardından uygun komutları girmesi gerekir. Komut dosyası nesnel olarak daha hızlı yapar.

Komut dosyaları, toplu veri dağıtım araçlarını kullanmanın imkansız olduğu durumlarda geçerlidir: Konsol. Veya ekipman için bazı veriler benzersiz olduğunda: ana bilgisayar adı, yönetim ip adresi. Veya bir program yazarken ve hata ayıklarken, komut dosyası çalışırken ekipmandan alınan verileri eklemekten daha zordur. - Her ekipmanın İnternet sağlayıcısının kendi IP adresine sahip olduğu durumlarda, bir rota belirlemek için komut dosyası içeren bir örnek. (Meslektaşlarım bu tür komut dosyaları yazdı - DMVPN konuştuğunda 3'ün üzerindeydi. DMVPN ayarlarını değiştirmek gerekiyordu).

Örnek Olay: Konsol Bağlantı Noktalarını Kullanarak Yeni Bir Anahtarda Başlangıç ​​Ayarlarını Yapılandırma:

A. Konsol kablosunu cihaza taktım.
B. Komut dosyasını çalıştırın
B. Komut dosyasının yürütülmesini bekledi
D. Konsol kablosunu bir sonraki cihaza taktım.
E. Anahtar sonuncu değilse, adım B'ye gidin.

Komut dosyasının çalışmasının bir sonucu olarak:

  • başlangıç ​​şifresi ekipman üzerinde ayarlanır.
  • kullanıcı adı girildi
  • cihazın benzersiz IP adresi girilir.

Not: İşlemin tekrarlanması gerekiyordu. Çünkü Varsayılan ssh yapılandırılmamış/devre dışı bırakılmamış. (Evet, bu benim hatam.)

Kullanılan kaynaklar

1. Komut dosyaları oluşturma hakkında
2. Komut dosyası örnekleri

Ek 1: Örnek komut dosyaları.


İki sorgu içeren uzun bir komut dosyası örneği: Ana bilgisayar adı ve IP adresi. Ekipmanı konsol (9600 baud) aracılığıyla önceden ayarlamak için yaratılmıştır. Ayrıca ekipmanın ağa bağlantısını hazırlamak için.

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

Bu tür komut dosyalarına genellikle ihtiyaç duyulmaz, ancak ekipman miktarı 15 adettir. Daha hızlı kuruluma izin verildi. SecureCRT Komut penceresini kullanarak ekipmanı kurmak daha hızlıydı.

ssh için bir hesap oluşturma.

Başka bir örnek. Konfigürasyon da konsol üzerinden yapılır.

# $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 Hakkında:Ücretli yazılım: 99 ABD dolarından (en düşük fiyat yalnızca bir yıllık SecureCRT içindir)
Resmi web sitesi
Bir yazılım lisansı bir kez, destekli (güncelleme için) satın alınır, ardından yazılım bu lisansla sınırsız bir süre kullanılır.

Mac OS X ve Windows işletim sistemlerinde çalışır.

Komut dosyası desteği var (bu makale)
Var Komut Penceresi
Seri/Telnet/SSH1/SSH2/Kabuk İşletim Sistemi

Kaynak: habr.com