Mi secuencia de comandos contiene un ssh
comando 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 $filename
primeras 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