bash: проверьте, существует ли удаленный файл с помощью scp - PullRequest
10 голосов
/ 28 марта 2011

Я пишу сценарий bash для копирования файла с удаленного сервера на мой локальный компьютер. Мне нужно проверить, доступен ли файл, чтобы я мог предпринять альтернативное действие, если его там нет.

Я знаю, как проверить, существует ли локальный файл, однако использование scp немного усложняет. Здравый смысл подсказывает мне, что одним из способов было бы попытаться как-нибудь проверить файл scp и проверить код возврата из команды scp. Это правильный путь?

Если да, как мне проверить код возврата из вызова scp?

Ответы [ 2 ]

10 голосов
/ 28 марта 2011

с использованием ssh + некоторый код оболочки, встроенный в строку cmd; используйте этот метод, когда вам нужно принять решение, прежде чем передача файла не удастся;

ssh remote-host 'sh -c "if [ -f ~/myfile ] ; then gzip -c ~/myfile ; fi" ' | gzip -dc > /tmp/pkparse.py

если вы хотите перенести каталоги, вам может понадобиться «tar» - это сначала

если вы хотите использовать scp, вы можете проверить код возврата следующим образом:

if scp remote-host:~/myfile ./ >&/dev/null ; then echo "transfer OK" ; else echo "transfer failed" ; fi

это действительно зависит от того, когда вам важно знать, есть файл или нет; до начала передачи (используйте ssh + sh) или после ее завершения.

0 голосов
/ 28 марта 2011

хорошо, так как вы можете использовать scp, вы можете попробовать использовать ssh для просмотра списка и посмотреть, является ли файл их или нет, прежде чем продолжить.

...