Cisco IOS'ta yapılandırma yedeklemesini (her dakika) otomatikleştirin


16

Cisco yönlendiricimin her 1 dakikada bir TFTP'yi otomatik olarak kopyala (ve alanları otomatik olarak doldur) çalıştırmasını istiyorum. Ayrıca arka planda çalışmasını da istiyorum. Herkes bunun mümkün olup olmadığını / nasıl yapılacağını biliyor mu? Ben bir show run yapmak ve görmem gerekeni almadan önce 4 veya 5 kez vurmak yerine notepad ++ (hangi gerçek zamanlı güncellemeleri) çalışan yapılandırmaları görüntülemek uğruna bunu yapmak istiyorum. Bunun karmaşık laboratuvarlar için olağanüstü yararlı olacağını düşünüyorum. Ayrıca, giriş gerektiren TFTP sunucusu komutları nedeniyle makrolar çalışmaz.


3
Dakikada bir kez gerçekten gerekli mi? Ayrıca, çalışan yapılandırmanın görmek istediğiniz bölümlerini filtrelemek için regex ile CLI'da yerleşik filtreleme kullanmayı düşündünüz mü? Yani | includeya | exclude? Çalışan yapılandırmalarınızı "gerçek zamanlı" olarak görüntülemenin faydasını görmek için uğraşıyorum.
John Jensen

Topolojim ve CLI pencerelerimle (sekmeli ve etiketli) bir monitöre sahip olmayı seviyorum. Cihazlarımın tüm çalışan yapılandırmalarını gerçek zamanlı olarak içeren ikinci monitörüm. Tüm çalışan konfigürasyonlarımı gerçek zamanlı olarak görebilmek komut sorunlarının giderilmesini, karşılaştırılmasını ve kopyalanmasını / yapıştırılmasını oldukça kolaylaştırır. Özellikle rota haritası ifadelerine ve EKL'lere derinlemesine girdiğinde, show run yazmak zorunda kalmamak büyük bir avantajdır | Yapılandırmanın bu bölümünü farklı cihazlarla görmek ve karşılaştırmak için birkaç kez rota haritası oluşturun. Bunu yararlı bulmaya çalıştığınız için özür dilerim ama sanırım her biri kendi için.
Michael Mayıs

@JohnJensen iyi bir noktaya geldim, her dakikasında rolü yakalamadım. Christian, çalışan yapılandırmaları bir metin belgesinde açmak yerine, ikinci monitörde cihazlarınıza açık ikinci bir ssh oturumu açmayı düşündünüz mü? Monitör A'nın değişiklikler için CLI oturumları ve Monitör B'nin yapılandırmaları görüntülemek için CLI oturumları. Bir yolun diğerinden daha iyi olduğunu söylememek, sadece fikirleri ortaya çıkarmak. :)
Brett Lykins

Brett, 'show running-config' gerçek zamanlı çıktı üretmiyor. Her değişiklik yaptığımda show run yazmam gerekecek ve tüm yapılandırmayı göstermek için boşluk çubuğuna birkaç kez basmam gerekecekti. Amaç, kullanıcı müdahalesi olmadan değişiklik yaptıktan hemen sonra güncellenen tam çalışan yapılandırmalara sahip olmaktır.
Michael

@ ChristiandelaPeña Seni takip ediyorum, sadece farklı insanların farklı şekillerde çalıştığını söylüyorum. Ben şahsen açıkladığınız şekilde canlı güncelleme yapılandırmalarına ihtiyacım olduğunu sanmıyorum. Bu yanlış yapmaz, sadece çalışma şeklim değil. :) İstediğini, istediğin gibi yapman için sana araçlar vermek istiyorum. Eğer öğrenme ve öğrenme sürece, benim için önemli olan bu.
Brett Lykins

Yanıtlar:


19

Bir Cisco cihazında bu tür işlevleri elde etmek için birkaç seçeneğiniz vardır. (Hangisini kullandığınız, ihtiyaçlarınıza ve bazen de cihaza ve IOS yüküne bağlıdır. Bazı eski cihazlar / IOS yükleri farklı özelliklere sahiptir.)

DÜZENLEME: Bunu, bu soru hakkında sohbetimizde öğrendiğiniz gibi, yönlendiricinizi sekteye uğratacak bir dakikada bir soruyorsunuz. (Özellikle GNS3'te) Doğrulama yedeklemesini otomatikleştirmek için aşağıdaki seçenekler kullanılabilir, ancak bunu her 1 dakikada bir yapmanızı önermem.

Şunlardan birini yapabilirsiniz:

  1. Komut planlaması için Cisco'nun Kron işlevini kullanın . Bu, önceden tanımlanmış komutları zamanlanmış olarak yürütmenizi sağlar. Belirttiğiniz gibi, copy run tftpdosya istemi onayı gerekir. ( Dosya istemi onayını kapatmadıysanız , ancak normal bir ayar olarak önermiyorum.) Yeniden yönlendirme onay gerektirmez. Yani zamanlayıcıda kullanılan komutshow run | redirect tftp://$SERVERIP/$PATH/$FILE

  2. Yapılandırma yönetimi için Cisco'nun Arşiv işlevini kullanın . Arşiv, yapılandırmanın birden fazla kopyasını sırayla depolamanın ve gerekirse önceki bir sürüme yapılandırmaları geri almanın bir yoludur. Kron ile kopyalama, önceki yapılandırmanın üzerine yazarken Arşiv, belirtilen konumda 14 farklı yapılandırma sürümünü korumanıza izin verir. Arşiv hakkında daha yararlı bilgiler için Cisco Learning ağındaki bu bağlantıya bakın . Özel olarak $ h ve $ t etiketleriyle dosya adının dinamik olarak nasıl ayarlanacağı.

Aşağıdaki örneklerden herhangi birinde, zamanları ihtiyaçlarınıza göre ayarlayabilirsiniz, bunlar sadece bazı üretim ekipmanlarından hızla çıkardığım şeydir.


Kron yazma yapılandırmasına sahip olmak ve haftada bir tftp sunucusuna yedeklemek için örnek yapılandırma:

kron occurrence SaveConfig at 23:50 Mon recurring
policy-list SaveConfig
!
kron occurrence BackupRunningConfig at 23:55 Mon recurring
policy-list BackupRunningConfig
!
kron policy-list SaveConfig
cli write
!
kron policy-list BackupRunningConfig
cli show running-config | redirect tftp://10.10.10.10/configs/testswitch.txt

Arşivi yapılandırmanızı günlük olarak bir tftp sunucusuna yedeklemek için yapılandırma örneği:

archive
 path tftp://10.10.10.10/configs/$h-$t
 time-period 1440
 maximum 14

12

Orada aslında başka bir yolu.

Bir TFTP kopyasını SNMP kullanarak tetikleyebilirsiniz. Çok basit değil , ama inanılmaz derecede faydalı.

İlk olarak, bir TFTP sunucusuna ihtiyacınız olacak (şaşırtıcı olmayan bir şekilde). Ayrıca snmp istekleri gönderebilecek bir şeye ihtiyacınız olacaktır. Linux snmp araçlarıyla etkili bir şekilde yaptım.

Yazma erişimi sınırlı olan SNMP için yeni bir topluluk oluşturmak ve muhtemelen bir IP ACL ile daha da kilitlemek isteyeceksiniz. Aslında sadece ccCopyTableOID'ye yazabilmeniz gerekir .

Linux tarafında, aşağıdaki MIB'lere ihtiyacınız olacak (işlevsellik yerine okunabilirlik için)

CISCO-CONFIG-COPY-MIB
CISCO-SMI
CISCO-ST-TC

Linux'ta SNMP yapılandırmanız için ilgili konuma MIB'ler yüklendiğinde, snmptable ile bağlantıyı test edebilmeniz gerekir:

snmptable -v2c -c writeCommunity 192.168.1.1 ccCopyTable
CISCO-CONFIG-COPY-MIB::ccCopyTable: No entries

Yönlendiricinin kopyalanması için genellikle TFTP sunucusunda dosyayı önceden oluşturmanız gerekir.

Bir TFTP kopyasını tetiklemek için, içine bir satır eklemeniz gerekir ccCopyTable.

snmpset bunu yapmanıza izin verir.

# snmpset -v2c -c writeCommunity 192.168.1.1 \
> ccCopyProtocol.23 i tftp \
> ccCopySourceFileType.23 i runningConfig \
> ccCopyDestFileType.23 i networkFile \
> ccCopyServerAddress.23 a 192.168.1.100 \
> ccCopyFileName.23 s router.conf

CISCO-CONFIG-COPY-MIB::ccCopyProtocol.23 = INTEGER: tftp(1)
CISCO-CONFIG-COPY-MIB::ccCopySourceFileType.23 = INTEGER: runningConfig(4)
CISCO-CONFIG-COPY-MIB::ccCopyDestFileType.23 = INTEGER: networkFile(1)
CISCO-CONFIG-COPY-MIB::ccCopyServerAddress.23 = IpAddress: 192.168.1.100
CISCO-CONFIG-COPY-MIB::ccCopyFileName.23 = STRING: router.conf

Bunu yaptıktan sonra, ilk komutu yeniden çalıştırabilmeniz ve ccCopyTable'da copy komutunu görebilmeniz gerekir.

snmptable -v 2c -c writeCommunity 192.168.1.1 ccCopyTable

SNMP table: CISCO-CONFIG-COPY-MIB::ccCopyTable

 index Protocol SourceFileType DestFileType ServerAddress    FileName UserName
    23     tftp  runningConfig  networkFile     192.168.1.100 router.conf        ?

SNMP table CISCO-CONFIG-COPY-MIB::ccCopyTable, part 2

 index UserPassword NotificationOnCompletion State TimeStarted TimeCompleted
    23            ?                    false     ?           ?             ?

SNMP table CISCO-CONFIG-COPY-MIB::ccCopyTable, part 3

 index FailCause EntryRowStatus ServerAddressType ServerAddressRev1
    23         ?              ?              ipv4       "192.168.1.100"

Satırı etkinleştirmek için ccCopyTable'da başka bir sütun ayarlayana kadar hiçbir şey olmaz.

 snmpset  -v2c -c writeCommunity 192.168.1.1 \
> ccCopyEntryRowStatus.23 i active

CcCopyTable'ı tekrar kontrol ederseniz, State ve TimeStarted öğelerinin dosyanın kopyalandığını yansıtacak şekilde güncellendiğini görmelisiniz.

Aşağıdaki kaynak bağlantılarda ccCopyTable'ın nasıl boşaltılacağı da dahil olmak üzere daha fazla ayrıntı vardır (isterseniz).

Bir TFTP kopyasını tetiklemek için bir Linux sunucusundan bir komut dosyasında aynı yöntemi kullandım, sonra dosyayı git'e taahhüt ettim ve tek bir hızlı işlemde depoya geri gönderdim.

Kaynaklar: http://www.ciscozine.com/2013/08/22/how-to-save-configurations-using-snmp/

ve http://bodgitandscarper.co.uk/networks/using-snmp-to-trigger-cisco-tftp-backups/


2
Kısa bir süre önce daha fazla cihaz desteği almak için RANCID'e geçene kadar Pancho'yu kullanarak yıllardır bunu yaptım. RANCID, yalnızca sürüm kontrolünü de aldığınız için şiddetle tavsiye edilir - bu arayüzün tam çift yönlüden otomatik hale ne zaman değiştiğini öğrenmek veya x ay boyunca hiçbir şeyin değişmediğini kanıtlamak için 'svn suçlama' kullanın .
AnotherHowie

RANCID, SVN yerine Git'i kontrol edebilir mi?
Tom O'Connor

Ben öyle düşünmüyorum. CVS varsayılan değerdir. SVN bir seçenektir. Salt yazılır, tek dallı, tek kullanıcılı (RANCID) sürüm denetimi durumu olduğundan, başka bir şey kullanmanın özel bir yararı yoktur. RANCID 3 şu anda çalışıyor, bu yüzden bu bölümü güncellemiş olabilirler. Perl, beklemek ve kabuk gibi nispeten eski moda bir yazılım parçası.
AnotherHowie

Yeni kontrol edildi ve RANCID 3 burada yeni VC seçeneklerinden bahsetmiyor: gossamer-threads.com/lists/rancid/users/6555#6555
AnotherHowie

2

EEM kullanabilirsiniz

Misal:

event manager applet dumpconfig
 event timer {absolute time time-value | countdown time time-value | cron cron-entry cron-entry | watchdog time time-value} [name timer-name]
 action 1.0 cli command "enable"
 action 2.0 cli show running-config | redirect tftp://10.10.10.10/configs/testswitch.txt
 action 998.0 cli command "end"
 action 999.0 cli command "exit"

Sadece NX-OS'de şüpheliyim ...
Tom O'Connor

1
@Tom, nexus (maalesef ;-)) yok, IOS'ta destekleniyor ... Sanırım tüm yönlendiriciler ve anahtarların çoğu tarafından desteklenen EEM: örneğin, EEM'yi desteklemeyen tek bir modelim var - 2950, ​​ancak 2960'larda, 3560, 3750 (E değil E), 4500, 4948, 6500 desteklenir.
pyatka

2

Bunu yapmak için RANCID kullanabilirsiniz .

Yapılandırmaların sürüm kontrolü, e-posta diffs ve diğer güzel şeyler gibi birkaç güzel şey daha alırsınız (varsayılan olarak bir donanım envanteri alır, böylece donanım değişirse bununla ilgili bir uyarı alırsınız).

Şimdiye kadar attığım her anahtar ve yönlendirici ile çalışır (başka bir artı olan Cisco / Juniper / Dell).


1

Aşağıdaki gibi, bir perl programı kullanabilirsiniz bu bir . Kullanımı:perl cisco_backup.pl "my-enable-password"


1
Yalnızca bağlantı içeren yayınlar yararlı olmaları açısından sınırlıdır. Bu çözümün ilgili kısımlarını cevabınıza ekleyebilir misiniz?
Ryan Foley

Mümkünse asla komut satırına şifre koymayın. Bunun yerine ortamı kullanın.
Puma

0

fetchconfig bunun için başka bir araçtır:

fetchconfig , birden çok cihazın yapılandırmasını almak için kullanılan bir Perl betiğidir. Linux ve Windows altında test edilmiştir ve şu anda Cisco IOS, Cisco Catalyst, Cisco ASA, Cisco PIX, FortiGate Güvenlik Duvarları, ProCurve, Alcatel Ethernet Yönlendiriciler (Riverstone), Dell PowerConnect Anahtarlar, Terayon 3200 / 3500 CMTS, Datacom DmSwitch Anahtarları, HP MSR Yönlendiriciler, Mikrotik Yönlendiriciler, Tellabs MSR Yönlendiriciler, Juniper EX Anahtar JunOS, Oracle Acme Paket, Ses Kodları Medyant, Cisco IOS XR, NEC Üniversitesi IX.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.