Как проверить, существует ли файл на удаленном сервере

Как проверить, существует ли файл на удаленном сервере

Я хочу проверить, существует ли файл где-то на удаленном сервере 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

Связанный контент