Quiero probar si existe un archivo en algún lugar de un servidor Linux remoto (por ejemplo, /var/run/test_daemon.pid), sin iniciar sesión en el servidor de forma interactiva. Por ejemplo, es posible que desee que su secuencia de comandos se comporte de manera diferente dependiendo de si existe o no un archivo específico en un servidor remoto.
Respuesta1
El siguiente comando funcionará si sabe exactamente dónde se encuentra el archivo.
ssh user@remote_server test -f /path/to/file/filename && echo "YES" || echo "no"
Necesita la pieza que comienza &&
porque la prueba no producirá ningún resultado y no podrá saber si el archivo se ha encontrado o no.
De lo contrario, si sólo conoce el nombre del archivo pero no está seguro de su paradero,
ssh user@remote_server find / -type f -name 'name_of_file*' -print
buscará su archivo en todo el sistema de archivos.
Observe el uso de ssh: se conecta al servidor remoto, ejecuta el comando que sigue a la expresión user@remote_server
, pero no abrirá una sesión interactiva: el control regresará al shell de su PC local.
Respuesta2
if [[ "`ssh -q user@hostname ls /dir/filename.abc 2>dev/null`" == "/dir/filename.abc" ]]
then
echo "file exists"
else
echo "file does not exist"
fi