Skip to main content

Vamos a comprobar conectividad SSH en un shell script que se ejecuta en un escritorio macOS, FreeBSD o Linux/Unix usando las opciones BatchMode=yes y ConnectTimeout=$VALUE.

El cliente ssh permite a los usuarios especificar el tiempo de espera en segundos cuando se conectan al servidor SSH en lugar de usar el tiempo de espera TCP predeterminado del sistema. Este tiempo se aplica para establecer la conexión y realizar el protocolo de enlace SSH inicial, más el intercambio de claves.

$ ssh -F /dev/null -l ${USERNAME} -i ~/.ssh/key.pub -o BatchMode=yes -o ConnectTimeout=${timeout} ${SERVERNAME} true &>/dev/null

Más en detalle, cada parámetro que posee el comando SSH realiza lo siguiente:

  • F /dev/null: Esta opción le dice a SSH que ignore el archivo de configuración. Esto es útil porque no desea usar la opción indicada en el archivo ~/.ssh/config, como usar conexiones ssh existentes, usuarios o puertos.
  • -l ${USERNAME}: Usuario utilizado para iniciar la sesión.
  • -i ~/.ssh/key.pub: Clave pública utilizada para presentar al servidor SSH remoto.
  • -o BatchMode=yes : Indica al cliente SSH que se ejecute en modo script.
  • -o ConnectTimeout=${timeout} : Se indica la cantidad máxima de tiempo que SSH esperará a que se establezca la conexión en segundos.
  • ${SERVERNAME}: Nombre de host o la dirección IP del host remoto al que desea conectarse.
  • true: Cuando esté conectado al sistema remoto, ejecute el comando true que siempre devuelve un valor de 0, lo que indica que la conexión SSH se realizó correctamente.
  • &>/dev/null: Redirige tanto la salida estándar como el error estándar del comando SSH a /dev/null. Ningún resultado del comando ssh será visible.

El contenido de este artículo esta bajo licencia Creative Commons.