Cómo automatizar el backup de la configuración de los routers y swiches de Cisco en un equipo Linux Debian con FTP, SSH y expect. Usaremos la conexión SSH y todas las configuraciones de todos los switches quedarán almacenadas en un mismo servidor centralizado, de forma automática y con software gratuito.

Requisitos para automatizar backups de configuración de switch y router Cisco

A continuación mostramos los requisitos para poder hacer una copia de seguridad de la configuración de los dispositivos de electrónica de red de Cisco y compatibles de nuestra organización (switches, routers, etc.). Explicamos lo necesario por parte de los routers/swiches y el servidor de FTP en Linux también necesario, como destino de los backups.

Los script que comentamos a continuación han sido mejorados, lo explicamos en el siguiente artículo:

Preparar electrónica de red Cisco o compatible (switches/routers) para backups automatizados

Necesitaremos tener habilitado el acceso por SSH a los switches Cisco, dado que será el método de conexión que realicemos para ejecutar, en remoto, los comandos necesarios para hacer el backup de su configuración y enviarlo al servidor FTP externo. En el siguiente artículo explicamos cómo habilitar el acceso SSH en un switch/router Cisco:

Configuraremos la conexión al servidor FTP externo en los switches (usuario y contraseña). Para ello, desde la consola del switch (con conexión por Telnet o por SSH), habilitaremos el modo privilegiado con:

Y accederemos al modo de configuración global con:

A continuación definiremos el usuario para FTP con:

Y la contraseña del usuario de FTP con:

Saldremos del modo configuración con:

Y guardaremos con:

Preparar electrónica de red Cisco o compatible (switches/routers) para backups automatizados

Equipo servidor FTP en Linux como destino de los backups

Dispondremos de un equipo con Linux Debian 11 (sirve cualquier otra distribución). Dicho equipo tendrá un servidor FTP configurado. En el siguiente enlace explicamos cómo montar un servidor FTP en Linux Debian 11 (válido para otras distribuciones):

Instalar expect en Linux Debian 11

Usaremos SSH para la conexión con el Switch Cisco (o compatible). Una vez conectados al shell del router/switch Cisco por SSH le enviaremos una serie de comandos para que obtenga la configuración actual y la envíe al servidor de FTP. Estos comandos, en algunos casos, requieren de la interacción del usuario (para confirmar la IP del servidor de FTP, para confirmar el nombre del fichero destino, etc.). Por ello usaremos expect, que nos permitirá hacer dicha interactuación de forma automática y sin nuestra intervención.

Instalaremos expect en el equipo Linux Debian con el comando:

Instalar expect en Linux Debian 11

Como vemos, es bastante sencillo, no necesitamos hacer nada más.

Script de conexión SSH al switch Cisco y ejecución remota del envío de la configuración al servidor FTP

Nota: los script que comentamos a continuación han sido mejorados, lo explicamos en el siguiente artículo:

Tras preparar los dispositivos Cisco y el servidor FTP y de conexión SSH, en dicho servidor Linux (nosotros estamos usando el mismo servidor Linux tanto para conectar con los switches como para recibir por FTP los ficheros de configuración), crearemos un script que será el encargado de realizar estas tareas (de forma automática):

  • Conectar por SSH al switch indicado.
  • Enviamos la contraseña de conexión SSH.
  • Ejecutar en el switch el comando: copy startup-config ftp:
  • Enviamos INTRO para la petición de servidor de destino FTP.
  • Enviamos INTRO para la petición de nombre de archivo de destino FTP.

El script completo:

Si al ejecutar el script anterior, en la conexión SSH al switch, muestra este error:

Unable to negotiate with 192.168.1.100 port 22: no matching key exchange method found. Their offer: diffie-hellman-group1-sha1

Habrá que indicar el algoritmo de cifrado expresamente, quedando el script:

Guardaremos el script anterior en un fichero, por ejemplo en /home/usu_ftp/script, con el nombre «backup_cisco.sh».

Una vez guardado el script anterior, le estableceremos al fichero el permiso de ejecución con:

Realizaremos una prueba de ejecución del script, para verificar que funciona correctamente. Le pasaremos por parámetro los datos de conexión (IP del switch, usuario y contraseña de conexión SSH al switch, IP del servidor FTP, nombre del fichero destino):

Donde:

  • 192.168.10.22: será la IP del switch/router Cisco al que nos conectaremos para hacer backup de su configuración.
  • usuario: nombre del usuario SSH del router/switch Cisco para la conexión.
  • contraseña: contraseña del usuario anterior.
  • 192.168.10.100: dirección IP del servidor Linux con el FTP.
  • Switch1_Cisco_Oficina.txt: nombre del fichero de destino que se enviará al FTP.

Si todo es correcto, ejecutará todos los comandos anteriores, esperando unos segundos en algunos, conectará con el switch indicado, ejecutará el comando de obtención de la configuración, lo enviará al FTP y finalizará:

Script de conexión SSH al switch Cisco y ejecución remota del envío de la configuración al servidor FTP

Accederemos al servidor FTP para verificar que existe el fichero enviado desde el switch. En nuestro caso, al ser el mismo servidor desde el que ejecutamos el comando de conexión, accederemos a la carpeta del FTP del usuario que hemos usado para la conexión FTP desde el switch:

Haremos un listado de los ficheros y comprobaremos si está el que le hayamos pasado por parámetro al script:

Script de conexión SSH al switch Cisco y ejecución remota del envío de la configuración al servidor FTP

Revisaremos también su contenido para asegurarnos de que es la configuración del switch/router de Cisco:

Script de conexión SSH al switch Cisco y ejecución remota del envío de la configuración al servidor FTP

Crearemos ahora un fichero de script que ejecutará el script anterior por cada switch del que queramos hacer backup. Por ejemplo, si tenemos el switch Switch_Oficina1 con la IP 192.168.10.150, crearemos un fichero con el texto:

Script de conexión SSH al switch Cisco y ejecución remota del envío de la configuración al servidor FTP

Suponemos siempre que el equipo con el servidor FTP tiene la IP 192.168.10.100. Guardaremos el fichero anterior con el nombre switch_oficina1.sh.

Crearemos tantos ficheros .sh como switches tengamos. Estableceremos el atributo de ejecución en todos estos ficheros con:

Revisaremos, como siempre, que los script de cada switch funcionan correctamente:

Script de conexión SSH al switch Cisco y ejecución remota del envío de la configuración al servidor FTP

Nota: si queremos mejorar los scripts que ejecutarán el backup de cada switch, para añadir la fecha de la copia de seguridad al nombre del fichero (para tener un fichero de texto con la copia de seguridad de cada switch y de cada día en que se realizó la copia), modificaremos el script anterior por este otro:

De esta forma, cuando se ejecute el script, creará un fichero con la fecha de ejecución y el nombre del switch. Así no se reemplazará cada vez que se haga copia y tendremos un histórico de los cambios de configuración realizados en cada switch:

Script de conexión SSH al switch Cisco y ejecución remota del envío de la configuración al servidor FTP

Estos ficheros ocupan tan poco que no será necesario ejecutar tareas de rotación que eliminen los más antiguos. Salvo que tengamos muchísimos switches y queramos hacer backup muy asiduamente (una o dos veces al día).

En nuestro caso haremos backup programado una vez a la semana por cada switch, como indicamos a continuación.

Crear tarea programada en equipo Linux para backup automático de la electrónica de red Cisco

Crearemos una tarea programada en el equipo Linux para ejecutar el script para cada switch de la organización del que queramos hacer copia de seguridad automática.

Para crear una tarea automática en el equipo Linux, donde tenemos los script de conexión con los switches, ejecutaremos el siguiente comando:

Agregaremos las siguientes líneas, para ejecutar la tarea de copia de seguridad de todos los switches, suponemos que tenemos los script:

Switch_Almacen1.sh
Switch_Almacen2.sh
Switch_Oficina1.sh
Switch_Oficina2.sh
Switch_Oficina3.sh

Por lo que añadiremos estas líneas al fichero de cron de Linux:

Crear tarea programada en equipo Linux para backup automático de la electrónica de red Cisco

Guardaremos los cambios con Control + O y cerraremos con Control + X. A partir de ahora, todos los sábados a las 5 de la tarde (y cada cinco minutos), se hará copia de seguridad automática de cada switch Cisco (o compatible) de nuestra organización.

Nota: en caso de que no se ejecuten las tareas de cron, revisad este enlace: