¿Cómo salir del script en una sesión ssh?

¿Cómo salir del script en una sesión ssh?

Mi secuencia de comandos contiene un sshcomando para iniciar sesión en un servidor remoto y ejecutar algunos comandos. El comando verifica si existe un archivo y, si no, debería aparecer en la secuencia de comandos completa.

ssh $user@$hostname "if[ -f $filename];then 
  echo"file exists Proceeding next steps;
else 
  "echo file doesn't exist";
   exit 1;
fi"

Sin embargo, el comando anterior se ejecuta correctamente si el archivo está presente. Pero en otros casos, si el archivo no existe, el comando de salida simplemente sale de la sesión ssh.

Todavía continúa con otros comandos en el script en lugar de salir del script.

Por favor ayúdame con tus sugerencias.

Respuesta1

Para ejecutar un script con ssh, que necesita ciertas variables configuradas previamente, por ejemplo, su $filename, haga lo siguiente:

ssh user@host 'bash -s' < local_script.sh "$filename"

Contenido de local_script.sh:

#!/bin/bash
[ $# -ne 1 ] && echo '$0 needs at least 1 parameter' 1>&2 && exit 2
filename="$1"

if [ ! -f "$filename" ]; then
  echo "[ $filename ] does not exist"
  exit 1
fi
echo "[ $filename ] exists"

Si no necesita ninguna variable pasada en el comando que desea ejecutar, esto funciona:

ssh user@host '
  if [ ! -f "test/stuff" ]; then
    echo "File does not exist"
    exit 1
  fi
  echo "File exists"
'

Tenga cuidado con las comillas simples ', impiden que su comando se ejecuteexpandido.

También verifiqué la inexistencia de las $filenameprimeras líneas de código para reducir y usé pestañas/espacios en blanco.

Para que su comando sea más legible, pruebe esto

ssh user@host <<'ENDSSH'
  if [ ! -f "test/stuff" ]; then
    echo "File does not exist"
    exit 1
  fi
  echo "File exists"
ENDSSH

Fuente

información relacionada