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