lunes, 17 de junio de 2013

Perder conexión remota, correr comandos, recuperar conexión remota


Resulta que a veces tenemos un server remoto configurado con una IP, nos conectamos, pero tenemos que desactivar la IP a la cual nos conectamos, correr comandos y luego necesitamos volver a poder conectarnos (y activar la IP a la cual nos conectamos por ende).

Por ejemplo, nos conectamos al server para trabajar, vía SSH a la IP 192.168.0.117, pero luego necesitamos - por algun motivo - desactivar esta interfaz/IP, correr algún comando y luego volver a configurar la IP 192.168.0.117.

En el camino vamos a perder la conexión remota, luego cuando la IP vuelva a estar accesible, la vamos a poder reestablecer.

Este es un one-liner que hace eso:

ifconfig eth0 down ; ifconfig eth1 10.17.15.19 netmask 255.255.255.0 up ; route add default gw 10.17.15.1 eth0 ; echo "Este comando corrió al tener desactivada la interfaz eth0 y bajada la IP a donde nos conectamos en forma remota" ; sleep 240 ; route del default gw 10.17.15.1 ; ifconfig eth1 down ; ifconfig eth0 192.168.0.117 netmask 255.255.255.0 up ; route add default gw 192.168.0.1 eth0

Desglosando el one-liner, por comandos:

1) Baja la interfaz eth0
--
En este punto perdemos la conexión remota SSH
--
2) Configura la interfaz eth1
3) Carga una ruta estática para eth1
4) Ejecuta un comando mientras eth0 está desactivada
5) Ejecuta otro comando, haciendo una pausa de 4 minutos, luego contínua con el siguiente comando.
6) Borra manualmente la ruta estática para eth1
7) Baja la interfaz eth1
7) Activa y configura de vuelta eth0
8) Carga la ruta estática de eth0
--
En este punto podremos volver a conectarnos al host remoto vía SSH
--

Como ven es un ejemplo con muchas posibilidades de mejora, y si en vez de usar un one-liner lo ponen en un script, puede funcionar mucho mejor incluso.

Que les sea útil.

No hay comentarios: