Сливаем файлы по ссш (проблемы с ssh, tar)

Модератор: Модераторы разделов

Atheist
Сообщения: 63

Сливаем файлы по ссш

Сообщение Atheist »

Есть удаленный сервер, доступ к которому по открытому ключу ссш.
С него надо забирать файлы (сколько неизвестно) из одной директории, однако не известно есть ли они там или нет.
Вот думаю сделать проверку - если файл/файлы на удаленном сервере есть - скачиваем их (таром), если нет - то tar ничего не начинает делать, однако проблема - если файлов нет - то tar на выход ничего не гонит, а на входе данные уже ждут:

Если файл есть на удаленном сервере:

Код: Выделить всё

ssh -n user@server 'cd ~/err; if [ $(ls | grep .err) ]; then tar -zcf - *.err; fi' | tar -zxf -
-bash-3.1$ ll
-rw-r--r-- 1 user comp1 0 Окт 18 16:15 dbf710.gz.err


Если файла на удаленном сервере нет:

Код: Выделить всё

ssh -n user@server 'cd ~/err; if [ $(ls | grep .err) ]; then tar -zcf - *.err; fi' | tar -zxf -
gzip: stdin: unexpected end of file
tar: Child returned status 1
tar: Выход, отложенный по результатам предыдущих ошибок


Может кто подскажет как мне организовать прoверку есть ли файл на удаленном сервере и если есть - скачать его/их оттуда.
Спасибо сказали:
Аватара пользователя
Voice
Сообщения: 1073
Статус: столлманист
ОС: Debian GNU/Linux

Re: Сливаем файлы по ссш

Сообщение Voice »

Есть ли файл можна проверить в скрипте по результату команды "ls file_name".
Результат в $?.
"И может собственных Платонов и быстрых разумом Невтонов российская земля рождать."
М. В. Ломоносов
Спасибо сказали:
Atheist
Сообщения: 63

Re: Сливаем файлы по ссш

Сообщение Atheist »

Voice писал(а):
19.10.2007 10:14
Есть ли файл можна проверить в скрипте по результату команды "ls file_name".
Результат в $?.

ну я так и делаю:

Код: Выделить всё

if [ $(ls | grep .err) ]; then

и проверка работает. И если файла нет - то код

Код: Выделить всё

tar -zcf - *.err
не выполняется, однако код

Код: Выделить всё

| tar -zxf -
выполняется всегда - что приводит к вот таким некрасивостям..
Спасибо сказали:
Аватара пользователя
Uncle_Theodore
Сообщения: 3339
ОС: Slackware 12.2, ArchLinux 64

Re: Сливаем файлы по ссш

Сообщение Uncle_Theodore »

Ну так напиши "fi" после "| tar -zxf -", а не там, где она у тебя сейчас...
Что-то я не понял вопроса...
Спасибо сказали:
Atheist
Сообщения: 63

Re: Сливаем файлы по ссш

Сообщение Atheist »

Uncle_Theodore писал(а):
19.10.2007 19:00
Ну так напиши "fi" после "| tar -zxf -", а не там, где она у тебя сейчас...
Что-то я не понял вопроса...

Дело в том что if...fi у меня стоит внутри ssh (то есть выполняется на удаленной машине), а tar -zxf - выполняется на локальной машине.
Впринципе нашел выход (все эрроры гнать в дев-нулл), но что то он какой то не очень:

Код: Выделить всё

ssh -n user@server 'cd ~/err; if [ $(ls | grep .err) ]; then tar -zcf - *.err; fi' | tar -zxf - 2>/dev/null
Спасибо сказали: