Zautomatyzuj tworzenie kopii zapasowej konfiguracji (co minutę) w Cisco IOS

16

Chciałbym, aby mój router Cisco automatycznie wykonywał kopiowanie TFTP (i automatycznie wypełniał pola) co 1 minutę. Chciałbym również, aby działał w tle. Ktoś wie, czy to jest możliwe / jak to zrobić? Chciałbym to zrobić, aby wyświetlić konfigurację moich routerów w Notatniku ++ (która aktualizuje się w czasie rzeczywistym), zamiast pokazywać i naciskać spację 4 lub 5 razy, zanim przejdę do tego, co muszę zobaczyć. Myślę, że byłoby to niezwykle przydatne w skomplikowanych laboratoriach. Makra również nie działają z powodu poleceń serwera TFTP wymagających danych wejściowych.

Michael May
źródło
3
Czy raz na minutę jest naprawdę potrzebny? Czy rozważałeś także użycie wbudowanego filtrowania w interfejsie CLI z wyrażeniem regularnym do filtrowania części działającej konfiguracji, którą chcesz zobaczyć? Tzn | includeczy | exclude? Z trudem dostrzegam przydatność możliwości przeglądania twoich uruchomionych konfiguracji „w czasie rzeczywistym”.
John Jensen
Lubię mieć jeden monitor z oknami topologii i CLI (z zakładkami i etykietami). Mój drugi monitor ze wszystkimi działającymi konfiguracjami moich urządzeń w czasie rzeczywistym. Możliwość zobaczenia wszystkich moich uruchomionych konfiguracji w czasie rzeczywistym znacznie ułatwia rozwiązywanie problemów, porównywanie i kopiowanie / wklejanie bloków poleceń. Zwłaszcza, gdy zagłębiamy się w instrukcje map tras i listy ACL, ogromną zaletą jest to, że nie trzeba wpisywać show run | Mapę trasy kilka razy, aby zobaczyć i porównać tę część konfiguracji z różnymi urządzeniami. Przykro mi, że nie możesz znaleźć tego przydatnego, ale sądzę, że każdy z nich ma swoje własne.
Michael May
@JohnJensen dobry punkt, nie łapałem tej części o każdej minucie. Christian, czy zastanawiałeś się nad tym, żeby na drugim monitorze otworzyć drugą oddzielną sesję ssh dla swoich urządzeń, zamiast otwierać uruchomione konfiguracje w dokumencie tekstowym? Monitoruj sesje CLI A pod kątem zmian i Monitoruj sesje CLI B do przeglądania konfiguracji. Nie mówienie, że jeden sposób jest lepszy od drugiego, po prostu rzucanie tam pomysłów. :)
Brett Lykins,
Brett, „show running-config” nie generuje danych wyjściowych w czasie rzeczywistym. Musiałbym pisać show run za każdym razem, gdy dokonam zmiany i musiałbym nacisnąć klawisz spacji kilka razy, aby pokazać mi całą konfigurację. Celem jest posiadanie pełnych uruchomionych konfiguracji, które są aktualizowane niemal natychmiast po ich wprowadzeniu bez interwencji użytkownika.
Michael May
@ ChristiandelaPeña Podążam za tobą, mówię tylko, że różni ludzie pracują na różne sposoby. Chyba osobiście nie widzę potrzeby aktualizowania konfiguracji na żywo w sposób, który opisujesz. To nie czyni tego źle, tylko nie tak, jak pracuję. :) Chcę dać ci narzędzia do robienia tego, co chcesz, tak jak chcesz. Tak długo, jak pracujesz i uczysz się, to wszystko jest dla mnie ważne.
Brett Lykins,

Odpowiedzi:

19

Istnieje kilka opcji uzyskania tego rodzaju funkcji na urządzeniu Cisco. (To, którego używasz, zależy od twoich potrzeb, a czasem od urządzenia i obciążenia IOS. Niektóre starsze urządzenia / obciążenia IOS będą miały różne możliwości.)

EDYCJA: Pytasz o zrobienie tego co minutę, co, jak dowiedziałeś się na naszym czacie na ten temat, spowoduje uszkodzenie routera. (Zwłaszcza w GNS3.) Poniższe opcje są dostępne w celu zautomatyzowania tworzenia kopii zapasowej potwierdzenia, jednak nie zalecałbym tego robić co 1 minutę.

Możesz:

  1. Użyj funkcji Kron firmy Cisco do planowania poleceń. Umożliwi to wykonywanie predefiniowanych poleceń zgodnie z harmonogramem. Jak wskazałeś, copy run tftpwymaga potwierdzenia pliku. (Chyba że wyłączyłeś potwierdzenie pytania o plik , jednak nie polecam go jako ustawienia normalnego.) Przekierowanie nie wymaga potwierdzenia. Tak więc polecenie użyte w harmonogramie toshow run | redirect tftp://$SERVERIP/$PATH/$FILE

  2. Użyj funkcji Cisco Archive do zarządzania konfiguracją. Archiwum to sposób na przechowywanie wielu kopii konfiguracji w sekwencyjny sposób i przywracanie konfiguracji w razie potrzeby do poprzedniej wersji. Kopiowanie za pomocą Kron zastępuje poprzednią konfigurację, natomiast Archive pozwala zachować do 14 różnych wersji konfiguracji w określonej lokalizacji. Zobacz ten link w sieci Cisco Learning, aby uzyskać więcej przydatnych informacji na temat Archiwum. W szczególności, jak dynamicznie ustawić nazwę pliku za pomocą tagów $ h i $ t.

W każdej z poniższych próbek możesz dostosować czasy do swoich potrzeb, to właśnie to, co szybko wyciągnąłem z jakiegoś sprzętu produkcyjnego.


Przykładowa konfiguracja, aby Kron zapisał konfigurację i co tydzień tworzył jej kopię zapasową na serwerze tftp:

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

Przykładowa konfiguracja, aby Archiwum codziennie tworzyło kopię zapasową konfiguracji na serwerze tftp:

archive
 path tftp://10.10.10.10/configs/$h-$t
 time-period 1440
 maximum 14
Brett Lykins
źródło
12

Jest właściwie inny sposób.

Możesz uruchomić kopię TFTP za pomocą SNMP. To nie jest strasznie proste, ale jest niezwykle przydatne.

Po pierwsze, potrzebujesz serwera TFTP (co nie dziwi). Będziesz także potrzebował czegoś, co może wysyłać żądania snmp. Zrobiłem to skutecznie za pomocą narzędzi snmp Linuksa.

Będziesz chciał założyć nową społeczność dla SNMP, która ma ograniczony dostęp do zapisu i prawdopodobnie zablokujesz ją jeszcze bardziej za pomocą IP ACL. W rzeczywistości wystarczy tylko napisać do ccCopyTableOID.

Po stronie systemu Linux potrzebne będą następujące bazy MIB (dla czytelności, a nie funkcjonalności)

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

Po zainstalowaniu baz MIB w odpowiedniej lokalizacji dla konfiguracji SNMP w systemie Linux, powinieneś być w stanie przetestować łączność za pomocą snmptable:

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

Zwykle konieczne jest wstępne utworzenie pliku na serwerze TFTP, aby router mógł go skopiować.

Aby uruchomić kopię TFTP, musisz wstawić wiersz do ccCopyTable.

snmpset pozwala ci to zrobić.

# 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

Gdy to zrobisz, powinieneś być w stanie ponownie uruchomić pierwsze polecenie i zobaczyć polecenie kopiowania w ccCopyTable.

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"

Nic się nie stanie, dopóki nie ustawisz kolejnej kolumny w ccCopyTable, aby aktywować wiersz.

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

Jeśli ponownie sprawdzisz ccCopyTable, powinieneś zobaczyć, że State i TimeStarted zostały zaktualizowane, aby odzwierciedlić, że plik został skopiowany.

Więcej informacji znajduje się w linkach poniżej, w tym jak opróżnić ccCopyTable (jeśli chcesz).

Użyłem tej samej metody w skrypcie z serwera Linux, aby wywołać kopię TFTP, a następnie zatwierdzić plik do git i zepchnąć go z powrotem do repozytorium, wszystko w jednym szybkim procesie.

Źródła: http://www.ciscozine.com/2013/08/22/how-to-save-configurations-using-snmp/

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

Tom O'Connor
źródło
2
W ten sposób robiłem to od lat, używając Pancho, aż ostatnio przełączyłem się na RANCID, aby uzyskać większą obsługę urządzeń. RANCID jest wysoce zalecany, tylko dlatego, że masz kontrolę wersji - użyj „svn blame”, aby dowiedzieć się, kiedy ten interfejs zmienił się z pełnego dupleksu na automatyczny lub udowodnić, że nic się nie zmieniło przez x miesięcy.
AnotherHowie,
Czy RANCID może zameldować się w Git zamiast SVN?
Tom O'Connor,
Nie wydaje mi się CVS jest domyślny. SVN jest opcją. Ponieważ jest to kontrola wersji tylko do zapisu, z pojedynczym odgałęzieniem, z pojedynczym użytkownikiem (RANCID), nie ma szczególnych korzyści z używania czegoś innego. RANCID 3 jest teraz w toku, więc możliwe, że zaktualizowali tę część. Jest to jednak stosunkowo staromodne oprogramowanie - perl, expect i shell.
AnotherHowie,
Właśnie sprawdzone, a RANCID 3 nie wspomina o nowych opcjach VC, tutaj: gossamer-threads.com/lists/rancid/users/6555#6555
AnotherHowie
2

Możesz użyć EEM

Przykład:

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"
pyatka
źródło
Podejrzewam, że tylko w NX-OS ...
Tom O'Connor,
1
@Tom, nie mam nexusa (niestety ;-)), w IOS jest obsługiwany ... Chyba EEM obsługiwany przez wszystkie routery i większość przełączników: na przykład mam tylko jeden model, który nie obsługuje EEM - 2950, ​​ale w 2960, 3560, 3750 (E i nie E), 4500, 4948, 6500 jest obsługiwany.
pyatka
2

Aby to zrobić, możesz użyć RANCID .

Dostajesz kilka innych fajnych rzeczy, takich jak kontrola wersji konfiguracji, różnice w poczcie e-mail i inne fajne rzeczy (domyślnie wymaga inwentaryzacji sprzętu, więc jeśli sprzęt się zmieni, dostaniesz ostrzeżenie).

Działa z każdym przełącznikiem i routerem, który do tej pory do niego wrzuciłem (Cisco / Juniper / Dell), co jest kolejnym plusem.

łeb
źródło
1

Możesz użyć skryptu perla, takiego jak ten . Stosowanie:perl cisco_backup.pl "my-enable-password"

Cisco
źródło
1
Posty zawierające tylko łącza mają ograniczoną przydatność. Czy możesz dodać odpowiednie części tego rozwiązania do swojej odpowiedzi?
Ryan Foley
Nigdy nie umieszczaj hasła w linii poleceń, jeśli to możliwe. Zamiast tego użyj środowiska.
Cougar
0

fetchconfig to kolejne narzędzie do tego:

fetchconfig to skrypt Perla do pobierania konfiguracji wielu urządzeń. Został przetestowany w systemach Linux i Windows, a obecnie obsługuje różne urządzenia, w tym Cisco IOS, Cisco Catalyst, Cisco ASA, Cisco PIX, FortiGate Firewalls, ProCurve, Alcatel Ethernet Routery (alias Riverstone), Dell PowerConnect Switches, Terayon 3200 / 3500 CMTS, przełączniki Datacom DmSwitch, routery HP MSR, routery Mikrotik, routery Tellabs MSR, Juniper EX Switch JunOS, Oracle Acme Packet, Audiocodes Mediant, Cisco IOS XR, NEC Univerge IX.

Everton
źródło