Cómo comprobar si un archivo existe en un servidor remoto

Cómo comprobar si un archivo existe en un servidor remoto

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

información relacionada