Я хочу проверить, существует ли файл где-то на удаленном сервере Linux (например, /var/run/test_daemon.pid), не входя на сервер интерактивно. Например, вы можете захотеть, чтобы ваш скрипт вел себя по-разному в зависимости от того, существует ли определенный файл на удаленном сервере.
решение1
Следующая команда подойдет, если вы точно знаете, где находится файл:
ssh user@remote_server test -f /path/to/file/filename && echo "YES" || echo "no"
Вам нужна часть, начинающаяся с , &&
поскольку test не выдаст никаких результатов, и вы не сможете определить, найден файл или нет.
В противном случае, если вы знаете только имя файла, но не уверены в его местонахождении,
ssh user@remote_server find / -type f -name 'name_of_file*' -print
выполнит поиск вашего файла по всей файловой системе.
Обратите внимание на использование ssh: он подключается к удаленному серверу, выполняет команду, следующую за выражением user@remote_server
, но не открывает интерактивный сеанс: управление будет возвращено оболочке на вашем локальном ПК.
решение2
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