ProHoster > Blog > yönetim > Komut Dosyalarını Kullanarak SecureCRT'de Girişi Otomatikleştirme
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
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.
# $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.
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 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:
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.
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.
Bu düğmelere herhangi bir komut dosyası eklenmemiştir. Yalnızca işlem satırı:
Ayar - böylece bir oturuma geçerken, oturum ayarlarında düğmeli gerekli panel açılır:
Müşterinin Login için bireysel komut dizileri oluşturması ve satıcı için sık komutlarla panele gitmesi mantıklıdır.
Go Cisco düğmesine bastığınızda, panel Cisco Düğme Çubuğuna geçer.
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.
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.)
İ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.
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