как найти файл, существующий в определенном каталоге через SSH
например: host1 и каталог /home/tree/TEST
Host2: - ssh host1 - найти файл TEST, существующий или не использующий bash
как найти файл, существующий в определенном каталоге через SSH
например: host1 и каталог /home/tree/TEST
Host2: - ssh host1 - найти файл TEST, существующий или не использующий bash
ssh вернет код выхода команды, которую вы просите выполнить:
if ssh host1 stat /home/tree/TEST \> /dev/null 2\>\&1
then
echo File exists
else
echo Not found
fi
Конечно, вам потребуется настроить аутентификацию по ключу, чтобы избежать запроса пароля.
test -e
или test -f
, поэтому получается: ssh host1 test -e /home/tree/TEST && echo File exists || echo Not found
.
- person Chen Levy; 16.03.2011
Вот что я сделал после прочтения и опробования материала здесь:
FileExists=`ssh host "test -e /home/tree/TEST && echo 1 || echo 0"`
if [ ${FileExists} = 0 ]
#do something because the file doesn't exist
fi
Дополнительная информация о тесте: http://linux.die.net/man/1/test
Расширение принятого ответа Эрика.
Вот мой скрипт bash для ожидания загрузки файла внешним процессом. Это заблокирует выполнение текущего скрипта на неопределенный срок, пока файл не будет существовать.
Требуется доступ по SSH на основе ключа, хотя его можно легко изменить на версию curl для проверок по HTTP.
Это полезно для загрузки через внешние системы, в которых используются временные имена файлов:
Скрипт ниже:
#!/bin/bash
set -vx
#AUTH="user@server"
AUTH="${1}"
#FILE="/tmp/test.txt"
FILE="${2}"
while (sleep 60); do
if ssh ${AUTH} stat "${FILE}" > /dev/null 2>&1; then
echo "File found";
exit 0;
fi;
done;
Не нужно эхо. Не может быть намного проще, чем это :)
ssh host "test -e /path/to/file"
if [ $? -eq 0 ]; then
# your file exists
fi