Como verificar se existe um arquivo em um servidor remoto

Como verificar se existe um arquivo em um servidor remoto

Quero testar se existe um arquivo em algum lugar de um servidor Linux remoto (por exemplo, /var/run/test_daemon.pid), sem efetuar login no servidor de forma interativa. Por exemplo, você pode querer que seu script se comporte de maneira diferente dependendo da existência ou não de um arquivo específico em um servidor remoto.

Responder1

O comando a seguir servirá, se você souber exatamente onde o arquivo está localizado

  ssh user@remote_server  test -f  /path/to/file/filename && echo "YES" || echo "no"

Você precisa da peça começando &&porque test não produzirá nenhuma saída e você não será capaz de dizer se o arquivo foi encontrado ou não.

Caso contrário, se você souber apenas o nome do arquivo, mas não tiver certeza de seu paradeiro,

 ssh user@remote_server find / -type f -name 'name_of_file*' -print

irá pesquisar seu arquivo em todo o sistema de arquivos.

Observe o uso do ssh: ele se conecta ao servidor remoto, executa o comando seguindo a expressão user@remote_server, mas não abre uma sessão interativa: o controle será retornado ao shell do seu pc local.

Responder2

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

informação relacionada