Linux – Capturar la tabla de rutas actual y hacerlas persistentes

Share on facebook
Share on twitter
Share on linkedin
Share on whatsapp
Share on telegram
Share on email

Recientemente, me han pedido en mi trabajo añadir nuevas rutas en unos cuatrocientos servidores Linux. La mayoría RedHat 6. Como sabemos, el comandos «ip route add» añade una ruta dinámicamente pero al rebotar el servidor, se pierde. Para hacerlas persistentes, tenemos que almacenar las rutas en el fichero /etc/sysconfig/network-script/route-Interfaz, con la siguiente sintaxis para cada ruta.

Ejemplo:

ADDRESS0=30.0.0.0
NETMASK0=255.0.0.0
GATEWAY0=30.32.0.1

Para hacer esta tarea en tantos servidores he enviado masivamente el comando ip route add con la ruta correspondiente a todos los servidores y luego he creado un script que capturaba la tabla de rutas y luego la almacenaba en el fichero de rutas comentado anteriormente. El código fuente del script en bash es el siguiente:

[root]# cat rutas.sh
#!/bin/sh

# Copia de seguridad del fichero de rutas
cp -p /etc/sysconfig/network-scripts/route* /tmp

REBAJAS
havit Teclado mecánico Gaming y ratón Español Teclados Gaming con Cable, Azul...
havit Teclado mecánico Gaming y ratón Español...
49,99 EUR
COMPRAR EN AMAZON
REBAJAS
Razer Ornata V2 Teclado Gaming, Teclado de membrana mecánica con Iluminación Razer...
Razer Ornata V2 Teclado Gaming, Teclado de...
84,99 EUR
COMPRAR EN AMAZON
Razer Huntsman Mini Mercury Edition Red Switch Teclado compacto para juegos compacto al...
Razer Huntsman Mini Mercury Edition Red Switch...
138,86 EUR
COMPRAR EN AMAZON
NUM=0
route -n |awk ‘{print $1″ «$2» «$3» «$8}’ |grep -v Kernel |grep -v Destination |while read RUTAS
do

# Capturamos los siguientes campos de las rutas actuales:
#ADDRESS0=30.0.0.0
#NETMASK0=255.0.0.0
#GATEWAY0=30.32.0.1


 
LINEA=(echo $RUTAS)
IP=${LINEA[1]}
GATEWAY=${LINEA[2]}
MASCARA=${LINEA[3]}
INTERFACE=${LINEA[4]}
FICHERORUTAS=/etc/sysconfig/network-scripts/route-$INTERFACE

# El default gateway no se pone en el script /etc/sysconfig/network-script/route-INTERFACE
if [ $IP == «0.0.0.0» ] || [ $GATEWAY == «0.0.0.0» ]
then
continue
fi

ADDRESS=$(echo ADDRESS$NUM=$IP)
NETMASK=$(echo NETMASK$NUM=$MASCARA)
GATEWAY=$(echo GATEWAY$NUM=$GATEWAY)

# Vaciamos el fichero de rutas
if [ $NUM == «0» ]
then

> $FICHERORUTAS

fi

# Escribimos el nuevo fichero de rutas
echo $ADDRESS >> $FICHERORUTAS
echo $NETMASK >> $FICHERORUTAS
echo $GATEWAY >> $FICHERORUTAS
echo >> $FICHERORUTAS

let NUM=NUM+1

# Reiniciamos los servicios de red
service network restart

done
[root]#

¿Te ha gustado? Compártelo

Share on facebook
Share on twitter
Share on linkedin
Share on whatsapp
Share on telegram
Share on email
About Author

Contenido Relacionado

Artículos Recientes

Deja un comentario