Automatice la copia de seguridad de la configuración (cada minuto) en Cisco IOS


16

Me gustaría hacer que mi enrutador Cisco realice una copia automáticamente TFTP (y complete los campos automáticamente) cada 1 minuto. También me gustaría que se ejecute en segundo plano. Alguien sabe si esto es posible / cómo hacerlo? Me gustaría hacer esto por el simple hecho de ver la configuración en ejecución de mis enrutadores en Notepad ++ (que se actualiza en tiempo real) en lugar de tener que hacer un show run y presionar la barra espaciadora 4 o 5 veces antes de llegar a lo que necesito ver. Creo que esto sería extraordinariamente útil para laboratorios complejos. Además, las macros no funcionan debido a que los comandos del servidor TFTP requieren entrada.


3
¿Es realmente necesario una vez por minuto? ¿También ha considerado usar el filtro incorporado en la CLI con regex para filtrar las partes de la configuración en ejecución que desea ver? Es decir | includeo | exclude? Me cuesta ver la utilidad de poder ver las configuraciones en ejecución "en tiempo real".
John Jensen

Me gusta tener un monitor con mi topología y ventanas de CLI (con pestañas y etiquetadas). Mi segundo monitor con todas las configuraciones en ejecución de mis dispositivos en tiempo real. Poder ver todas mis configuraciones de ejecución en tiempo real hace que la resolución de problemas, la comparación y la copia / pegado de bloques de comandos sea considerablemente más fácil. Especialmente al profundizar en las declaraciones de mapas de ruta y las ACL, es un gran beneficio no tener que escribir show run | s mapa de ruta varias veces para ver y comparar esta parte de la configuración con diferentes dispositivos. Lamento que te cueste encontrar esto útil, pero creo que cada uno tiene lo suyo.
Michael mayo

@JohnJensen buen punto, no entendí el papel cada minuto. Christian, ¿has considerado simplemente tener una segunda sesión ssh separada abierta para tus dispositivos en el segundo monitor, en lugar de tener abiertas las configuraciones en ejecución en un documento de texto? Supervise las sesiones CLI de A para ver los cambios y las sesiones CLI de Monitor B para ver las configuraciones. No decir que una forma es mejor que la otra, simplemente lanzar ideas por ahí. :)
Brett Lykins

Brett, 'show running-config' no produce resultados en tiempo real. Tendría que escribir show run nuevamente cada vez que realice un cambio y tendría que presionar la barra espaciadora varias veces para que me muestre toda la configuración. El objetivo es tener configuraciones completas en ejecución que se actualicen casi tan pronto como realice un cambio en ellas sin la intervención del usuario.
Michael May

@ ChristiandelaPeña Te sigo, solo digo que diferentes personas trabajan de diferentes maneras. Supongo que personalmente no veo la necesidad de tener configuraciones de actualización en vivo de la manera que estás describiendo. Eso no lo hace mal, solo que no es mi forma de trabajar. :) Quiero darte las herramientas para hacer lo que quieras, de la manera que quieras. Mientras estés trabajando y aprendiendo, eso es todo lo que me importa.
Brett Lykins

Respuestas:


19

Tiene varias opciones para obtener este tipo de funcionalidad en un dispositivo Cisco. (El que use depende de sus necesidades y, a veces, del dispositivo y la carga del IOS. Algunos dispositivos más antiguos / cargas del IOS tendrán diferentes capacidades).

EDITAR: está preguntando acerca de hacer esto cada minuto, lo cual, como descubrió en nuestro chat sobre esta pregunta, bloqueará su enrutador. (Especialmente en GNS3.) Las siguientes opciones están disponibles para automatizar la copia de seguridad de confirmación, sin embargo, no recomendaría hacerlo cada 1 minuto.

Usted podría:

  1. Use la funcionalidad Kron de Cisco para la programación de comandos. Esto le permitirá ejecutar comandos predefinidos de forma programada. Como señaló, copy run tftprequiere la confirmación inmediata del archivo. (A menos que haya desactivado la confirmación de solicitud de archivo , sin embargo, no lo recomiendo como una configuración normal). La redirección no requiere confirmación. Entonces, el comando utilizado en el planificador esshow run | redirect tftp://$SERVERIP/$PATH/$FILE

  2. Use la funcionalidad de archivo de Cisco para la gestión de la configuración. Archivar es una forma de almacenar múltiples copias de la configuración de forma secuencial y revertir las configuraciones si es necesario a una versión anterior. Copiar con Kron sobrescribe la configuración anterior, mientras que Archive le permite mantener hasta 14 versiones de configuración diferentes en la ubicación especificada. Consulte este enlace en la red Cisco Learning para obtener más información útil sobre el archivo. Específicamente cómo establecer dinámicamente el nombre de archivo con las etiquetas $ hy $ t.

En cualquiera de las siguientes muestras, puede ajustar los tiempos a sus necesidades, estos son justo lo que saqué rápidamente de algunos equipos de producción.


Configuración de muestra para que Kron escriba la configuración y realice una copia de seguridad en un servidor tftp una vez por semana:

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

Configuración de muestra para que Archive realice una copia de seguridad de su configuración en un servidor tftp diariamente:

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

12

En realidad hay otra forma.

Puede activar una copia TFTP usando SNMP. No es terriblemente sencillo, pero es increíblemente útil.

En primer lugar, necesitará un servidor TFTP (como era de esperar). También necesitará algo que pueda enviar solicitudes snmp. Lo hice de manera efectiva con las herramientas snmp de Linux.

Deberá configurar una nueva comunidad para SNMP que tenga acceso de escritura limitado, y probablemente bloquearla aún más con una ACL IP. En realidad, solo necesita poder escribir en el ccCopyTableOID.

En el lado de Linux, necesitará las siguientes MIB (para facilitar la lectura, en lugar de la funcionalidad)

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

Con las MIB instaladas en la ubicación relevante para su configuración SNMP en Linux, debería poder probar la conectividad con snmptable de esta manera:

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

Por lo general, debe crear previamente el archivo en el servidor TFTP para que el enrutador lo copie.

Para activar una copia TFTP, debe insertar una fila en el ccCopyTable.

snmpset te permite hacer esto.

# 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 vez que haya hecho eso, debería poder volver a ejecutar el primer comando y ver el comando copiar en la 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"

Nada sucederá hasta que establezca otra columna en ccCopyTable para activar la fila.

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

Si vuelve a comprobar ccCopyTable, debería ver que State y TimeStarted se han actualizado para reflejar que el archivo se ha copiado.

Hay más detalles en los enlaces de origen a continuación, incluido cómo vaciar ccCopyTable (si lo desea).

Utilicé el mismo método en un script de un servidor Linux para activar una copia TFTP, luego confirme el archivo en git y lo devolví al repositorio, todo en un proceso rápido.

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

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


2
Esta es la forma en que lo he hecho durante años, usando Pancho, hasta que recientemente cambié a RANCID para obtener más soporte para dispositivos. RANCID es muy recomendable, simplemente porque también obtienes el control de la versión: usa 'svn blame' para saber cuándo esa interfaz cambió de dúplex completo a automático, o prueba que nada ha cambiado durante x meses.
AnotherHowie

¿Puede RANCID registrarse en Git en lugar de SVN?
Tom O'Connor

No lo creo. CVS es el valor predeterminado. SVN es una opción. Como se trata de una situación de control de versiones de solo escritura, una sola rama, un solo usuario (RANCID), no hay ningún beneficio particular al usar otra cosa. Sin embargo, RANCID 3 está en proceso en este momento, por lo que es posible que hayan actualizado esa parte. Sin embargo, es una pieza de software relativamente anticuada: perl, esperar y shell.
AnotherHowie

Acabo de marcar y RANCID 3 no menciona nuevas opciones de VC, aquí: gossamer-threads.com/lists/rancid/users/6555#6555
AnotherHowie

2

Puedes usar EEM

Ejemplo:

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 en NX-OS, sospecho ...
Tom O'Connor

1
@ Tom, no tengo nexo (desafortunadamente ;-)), en IOS es compatible ... Supongo que EEM es compatible con todos los enrutadores y la mayoría de todos los conmutadores: por ejemplo, solo tengo un modelo, que no es compatible con EEM: 2950, ​​pero en 2960s, 3560, 3750 (E y no E), 4500, 4948, 6500 es compatible.
pyatka

2

Podrías usar RANCID para hacer esto.

Obtiene algunas otras cosas buenas, como el control de versiones de las configuraciones, diferencias de correo electrónico y otras cosas buenas (de forma predeterminada, se necesita un inventario de hardware, por lo que si el hardware cambia, recibirá una alerta con eso).

Funciona con todos los conmutadores y enrutadores que he lanzado hasta ahora (Cisco / Juniper / Dell), que es otra ventaja.


1

Puede usar un script perl, como este . Uso:perl cisco_backup.pl "my-enable-password"


1
Las publicaciones solo de enlace tienen una utilidad limitada. ¿Puedes agregar las porciones relevantes de esta solución a tu respuesta?
Ryan Foley

Nunca ponga contraseña a la línea de comando si es posible. Use el medio ambiente en su lugar.
Cougar

0

fetchconfig es otra herramienta para esto:

fetchconfig es un script de Perl para recuperar la configuración de múltiples dispositivos. Ha sido probado en Linux y Windows, y actualmente admite una variedad de dispositivos, incluidos Cisco IOS, Cisco Catalyst, Cisco ASA, Cisco PIX, FortiGate Firewalls, ProCurve, Alcatel Ethernet Routers (también conocido como Riverstone), Dell PowerConnect Switches, Terayon 3200 / 3500 CMTS, Datacom DmSwitch Switches, HP MSR Routers, Mikrotik Routers, Tellabs MSR Routers, Juniper EX Switch JunOS, Oracle Acme Packet, Audiocodes Mediant, Cisco IOS XR, NEC Univerge IX.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.