Automatizza il backup della configurazione (ogni minuto) in Cisco IOS


16

Vorrei che il mio router Cisco eseguisse automaticamente una copia eseguendo TFTP (e compilando i campi automaticamente) ogni 1 minuto. Mi piacerebbe anche che fosse eseguito in background. Qualcuno sa se questo è possibile / come farlo? Vorrei farlo per visualizzare la configurazione in esecuzione dei miei router in notepad ++ (che aggiorna in tempo reale) invece di dover eseguire uno spettacolo e colpire la barra spaziatrice 4 o 5 volte prima di arrivare a ciò che devo vedere. Penso che questo sarebbe straordinariamente utile per i laboratori complessi. Inoltre, le macro non funzionano a causa dei comandi del server TFTP che richiedono input.


3
Una volta al minuto è davvero necessario? Hai anche preso in considerazione l'utilizzo del filtro incorporato nella CLI con regex per filtrare le parti della configurazione in esecuzione che desideri vedere? Cioè | includeo | exclude? Faccio fatica a vedere l'utilità di poter visualizzare le tue configurazioni di corsa "in tempo reale".
John Jensen,

Mi piace avere un monitor con la mia topologia e le finestre della CLI (a schede ed etichettate). Il mio secondo monitor con tutte le configurazioni in esecuzione dei miei dispositivi in ​​tempo reale. Essere in grado di vedere tutte le mie configurazioni in esecuzione in tempo reale rende notevolmente più facile la risoluzione dei problemi, il confronto e la copia / incolla dei blocchi di comandi. Soprattutto quando si approfondiscono le istruzioni della mappa del percorso e le ACL, è un grande vantaggio non dover scrivere show run | s mappa del percorso più volte per vedere e confrontare questa parte della configurazione con diversi dispositivi. Mi dispiace che tu abbia difficoltà a trovare questo utile, ma credo che ognuno di loro.
Michael,

@JohnJensen buon punto, non ho capito la parte ogni minuto. Christian, hai considerato di avere solo una seconda sessione ssh separata aperta sui tuoi dispositivi sul secondo monitor, piuttosto che avere le configurazioni in esecuzione aperte in un documento di testo? Monitorare le sessioni della CLI di A per le modifiche e Monitorare le sessioni della CLI di B per visualizzare le configurazioni. Non dire che un modo è meglio dell'altro, basta lanciare idee là fuori. :)
Brett Lykins il

Brett, "show running-config" non produce output in tempo reale. Dovrei digitare di nuovo show run ogni volta che apporto una modifica e dovrei premere più volte la barra spaziatrice per far sì che mi mostri tutta la configurazione. L'obiettivo è disporre di configurazioni in esecuzione complete che vengono aggiornate quasi non appena le si modifica senza l'intervento dell'utente.
Michael,

@ ChristiandelaPeña Ti seguo, sto solo dicendo che persone diverse lavorano in modi diversi. Immagino di non vedere personalmente la necessità di avere configurazioni di aggiornamento in tempo reale nel modo che stai descrivendo. Questo non lo rende sbagliato, non solo nel modo in cui lavoro. :) Voglio darti gli strumenti per fare ciò che vuoi, nel modo che desideri. Finché stai lavorando e imparando, questo è tutto ciò che conta per me.
Brett Lykins,

Risposte:


19

Sono disponibili diverse opzioni per ottenere questo tipo di funzionalità su un dispositivo Cisco. (Quello che usi dipende dalle tue esigenze e talvolta dal dispositivo e dal carico IOS. Alcuni dispositivi più vecchi / carichi IOS avranno capacità diverse.)

EDIT: Stai chiedendo di farlo ogni minuto, che come hai scoperto nella nostra chat su questa domanda, bloccherà il tuo router. (Soprattutto in GNS3.) Le opzioni seguenti sono disponibili per automatizzare il backup di configurazione, tuttavia non consiglierei di farlo ogni 1 minuto.

Puoi:

  1. Utilizzare la funzionalità Kron di Cisco per la pianificazione dei comandi. Ciò ti consentirà di eseguire comandi predefiniti su base programmata. Come hai sottolineato, copy run tftprichiede la conferma immediata del file. (A meno che tu non abbia disattivato la conferma del prompt dei file , tuttavia non lo consiglio come impostazione normale.) Il reindirizzamento non richiede conferma. Quindi il comando utilizzato nello scheduler èshow run | redirect tftp://$SERVERIP/$PATH/$FILE

  2. Utilizzare la funzionalità Cisco Archive per la gestione della configurazione. L'archiviazione è un modo per archiviare più copie della configurazione in modo sequenziale e ripristinare le configurazioni se necessario a una versione precedente. La copia con Kron sovrascrive la configurazione precedente, mentre Archive consente di conservare fino a 14 diverse versioni di configurazione nella posizione specificata. Vedi questo link sulla rete Cisco Learning per ulteriori informazioni utili su Archive. In particolare, come impostare dinamicamente il nome file con i tag $ h e $ t.

In uno dei seguenti campioni, è possibile regolare i tempi in base alle proprie esigenze, questi sono esattamente ciò che ho estratto rapidamente da alcuni attrezzi di produzione.


Config di esempio per fare in modo che Kron scriva config ed esegua il backup su un server tftp una volta alla settimana:

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

Esempio di configurazione per fare in modo che Archive esegua il backup della configurazione su un server tftp ogni giorno:

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

12

In realtà c'è un altro modo.

È possibile attivare una copia TFTP tramite SNMP. Non è terribilmente diretto, ma è incredibilmente utile.

In primo luogo, avrai bisogno di un server TFTP (non sorprende). Avrai anche bisogno di qualcosa che possa inviare richieste snmp. L'ho fatto efficacemente con gli strumenti snmp di Linux.

Ti consigliamo di creare una nuova community per SNMP con accesso in scrittura limitato e probabilmente bloccarla ulteriormente con un ACL IP. In realtà devi solo essere in grado di scrivere ccCopyTablesull'OID.

Sul lato Linux, avrai bisogno dei seguenti MIB (per leggibilità, piuttosto che funzionalità)

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

Con i MIB installati nella posizione pertinente per la configurazione SNMP su Linux, dovresti essere in grado di testare la connettività con snmptable in questo modo:

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

Di solito è necessario pre-creare il file sul server TFTP per la copia del router.

Per attivare una copia TFTP, è necessario inserire una riga nel file ccCopyTable.

snmpset ti permette di farlo.

# 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

Una volta fatto ciò, dovresti essere in grado di rieseguire il primo comando e vedere il comando copia nella tabella ccCopy.

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"

Non accadrà nulla finché non imposterai un'altra colonna su ccCopyTable per attivare la riga.

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

Se si controlla nuovamente ccCopyTable, si dovrebbe vedere che State e TimeStarted sono stati aggiornati per riflettere che il file è stato copiato.

Ci sono maggiori dettagli nei link sorgente qui sotto, incluso come svuotare ccCopyTable (se lo desideri).

Ho usato lo stesso metodo in uno script da un server Linux per attivare una copia TFTP, quindi eseguire il commit del file su git e rimandarlo al repository, tutto in un unico processo rapido.

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

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


2
Questo è il modo in cui lo faccio da anni, usando Pancho, fino a quando non sono passato di recente a RANCID per ottenere più supporto per i dispositivi. RANCID è altamente raccomandato, semplicemente perché hai anche il controllo della versione - usa 'svn blame' per scoprire quando quell'interfaccia è cambiata da full duplex ad auto, o prova che nulla è cambiato per x mesi.
AnotherHowie,

RANCID può accedere a Git anziché a SVN?
Tom O'Connor,

Io non la penso così. CVS è l'impostazione predefinita. SVN è un'opzione. Dal momento che si tratta di una situazione di controllo della versione di sola lettura, ramo singolo, utente singolo (RANCID), non c'è alcun vantaggio particolare nell'utilizzare qualcos'altro. RANCID 3 è attualmente in lavorazione, quindi è possibile che abbiano aggiornato quella parte. È comunque un software relativamente vecchio stile: perl, aspettarsi e shell.
AnotherHowie,

Appena controllato e RANCID 3 non menziona le nuove opzioni VC, qui: gossamer-threads.com/lists/rancid/users/6555#6555
AnotherHowie

2

Puoi usare EEM

Esempio:

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"

Solo su NX-OS, sospetto ...
Tom O'Connor il

1
@Tom, non ho nexus (purtroppo ;-)), in IOS è supportato ... Immagino che EEM sia supportato da tutti i router e soprattutto da tutti gli switch: ad esempio, ho solo un modello, che non supporta EEM - 2950, ​​ma nei 2960, 3560, 3750 (E e non E), 4500, 4948, 6500 è supportato.
Pyatka,

2

È possibile utilizzare RANCID per farlo.

Ottieni alcune altre cose carine come il controllo della versione delle configurazioni, le differenze e-mail e altre cose carine (per impostazione predefinita prende un inventario hardware, quindi se l'hardware cambia ricevi un avviso con quello).

Funziona con ogni switch e router che ho lanciato finora (Cisco / Juniper / Dell) che è un altro vantaggio.


1

Puoi usare uno script perl, come questo . Uso:perl cisco_backup.pl "my-enable-password"


1
I post solo link sono limitati nella loro utilità. Puoi aggiungere le parti pertinenti di questa soluzione alla tua risposta?
Ryan Foley,

Non mettere mai la password nella riga di comando, se possibile. Usa invece l'ambiente.
Cougar

0

fetchconfig è un altro strumento per questo:

fetchconfig è uno script Perl per il recupero della configurazione di più dispositivi. È stato testato su Linux e Windows e attualmente supporta una vasta gamma di dispositivi, tra cui Cisco IOS, Cisco Catalyst, Cisco ASA, Cisco PIX, FortiGate Firewall, ProCurve, Alcatel Ethernet Router (aka Riverstone), Dell PowerConnect Switches, Terayon 3200 / 3500 CMTS, switch DmSwitch Datacom, router HP MSR, router Mikrotik, router Tellabs MSR, Juniper EX Switch JunOS, Oracle Acme Packet, Audiocodes Mediant, Cisco IOS XR, NEC Univerge IX.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.