как найти файл существует в частности dir через SSH - PullRequest
6 голосов
/ 16 марта 2011

как найти файл существует в определенном каталоге через SSH

например: host1 и dir / home / tree / TEST

Host2: - ssh host1 - обнаружение, что файл TEST существует или не использует bash

Ответы [ 4 ]

9 голосов
/ 16 марта 2011

ssh вернет код завершения команды, которую вы просите выполнить:

if ssh host1 stat /home/tree/TEST \> /dev/null 2\>\&1
then 
  echo File exists
else 
  echo Not found
fi

Конечно, вам нужно будет настроить аутентификацию по ключу, чтобы избежать запроса пароля.

7 голосов
/ 16 ноября 2012

Это то, что я закончил, прочитав и опробовав материал здесь:

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

1 голос
/ 08 апреля 2013

Расширение принятого ответа Эрика.

Вот мой bash-скрипт для ожидания внешнего процесса загрузки файла.Это будет блокировать текущее выполнение скрипта на неопределенный срок, пока файл не существует.

Требуется доступ по SSH на основе ключа, хотя его можно легко изменить на версию curl для проверок по HTTP.

Это полезно для загрузки через внешние системы, использующие временные имена файлов:

  • rsync
  • передача (торрент)

Сценарий ниже:

#!/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;
0 голосов
/ 15 апреля 2015

Нет необходимости в эхо. Не может быть намного проще, чем это:)

ssh host "test -e /path/to/file"
if [ $? -eq 0 ]; then
    # your file exists
fi
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...