Distinguir una sesión local de una remota en Linux

Me he encontrado con la necesidad de programar un pequeño script en bash para el servidor Linux de un cliente. Dicho script estaba funcionando correctemente en la máquina local pero no así cuando se realizaba una conexión remota.

Ante esto era preciso encontrar alguna manera de discernir entre las conexiones locales y remontas para realizar configuraciones diferentes para cada una.

La solución, sencilla y un tanto ingeniosa, pasó por utilizar variables de entorno para hacer la distinción entre conexión local y remota:

if [[ -z "$REMOTEHOST" &&  -z  "$SSH_CLIENT"  ]]; then
echo "Cliente conectado en local";
else
echo "Cliente conectado en remoto";
fi

Se comprueba que no existan las variables de entorno $REMOTEHOST ni $SSH_CLIENT, la primera está presente en conexiones telnet y la segunda en conexiones SSH. Si no existe ninguna de ellas la conexión es local, si existe alguna de ellas la conexión es remota.

4 comentarios en “Distinguir una sesión local de una remota en Linux

  1. Pingback: Distinguir sesión local de sesión por SSH « Experimentos en la buhardilla

  2. Uatek

    Muchas gracias, justo lo que buscaba.

    Añado tu referencia y el contenido del artículo en mi blog, si cuento con tu consentimiento claro.

    Saludos

  3. Soulchainer

    Marqué esto hace tiempo, porque lo encontré realmente útil y sabía que un día me sería de ayuda. Pues hoy ha llegado ese día. Recordé que había visto algo así, miré mis marcadores y ¡olé!
    Ya me estaba desquiciando con un error por ssh, hasta que caí en que con esto se podía solucionar el problema :p
    Muchas gracias por compartirlo, Rodrigo ;)
    ¡Un saludo!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *