LINUX.ORG.RU
решено ФорумAdmin

stdout через ssh проблема

 , , , ,


0

2

Здравствуйте, столкнулся с проблемой: есть скрипт передающий конфиги таким способом:

tar -cf - $dir | ssh -T username@host "cd $tempdir ; tar -xf -"

Все работало замечательно, до недавнего времени - файлы стали приходить, но не все. Причем пропадают не всегда.

вручную тар на упаковку не ругается перенаправляю вывод в файл и из файла в тар - не ругается. Не могу понять куда копать, прошу совета мудрейших.

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



Последнее исправление: Michael89 (всего исправлений: 3)

добавь к параметрам tar в обоих случаях ключ v. Будет видно, какие файлы обрабатываются

Deleted
()
Ответ на: комментарий от Deleted

добавил, ни на что не ругается, порядок при упаковке и распаковке разный, от diff глаза разбегаются в разные стороны. По количеству строк одинаково. Визуальных несовпадений нет.

Michael89
() автор топика
Ответ на: комментарий от Dron

попробую, немного отстаю в матчасти, могли бы объяснить что это дает? скрипт был написан до меня, давным давно забытым админом, честно говоря не понимаю для чего здесь -T

Michael89
() автор топика
Ответ на: комментарий от Michael89

может лучше поспать? Если после «tar xvf some.tar.gz» выведенный список файлов отличается от видимого в файловой системе - это уже бредом попахивает. После отдыха проверь пробелы и "-" в вводимой команде, может там косяки.

Deleted
()
Ответ на: комментарий от Michael89

man ssh ::)

 -T      Disable pseudo-tty allocation.

     -t      Force pseudo-tty allocation.  This can be used to execute arbitrary screen-based programs
             on a remote machine, which can be very useful, e.g. when implementing menu services.  Mul‐
             tiple -t options force tty allocation, even if ssh has no local tty.

Dron ★★★★★
()
Ответ на: комментарий от Deleted

Не от выведенного в системе, а от вывода с -v. В том то и дело что пропадают периодически. Пробелов нет, есть только «точки». Это файлы вида name.xxx.xxx.xxx.xxx.conf

Michael89
() автор топика
Ответ на: комментарий от Dron

Читал, по идее здесь не должно быть критично. Думал над тем что на вторую машину криво приходит. Но как бы скрипт работал годами и тут такой сбой. Там ~500 файлов конфигов dhcp, ими подменяется текущие (причем перед заменой старые вычищаются rm -rf). При отсутствии dhcpd падает, было б подобное ранее точно заметили бы)

Michael89
() автор топика
Ответ на: комментарий от Michael89

Экстремальный скрипт. Ведь если ssh оборвётся, не все файлы распакуются. Когда я писал что-то подобное, то по ssh передавал не выхлоп tar'а, а именно файл, чтобы была известна md5sum, а на удалённом сервере сначала проверял md5 архива, и только потом распаковывал его.

mky ★★★★★
()

Не проверял как это завязано с -T и -t, но ssh это не та штука которая может бинарные файлы через консоль тягать. ESC последовательности. ~., например рвет сессию.

naszar
()

Тебе нужен scp и это будет правильно. Запаковал, передал, распаковал.

stave ★★★★★
()
Ответ на: комментарий от mky

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

Тут уже наверно больше принципиальный вопрос, что стало причиной. Ведь работало же)

Michael89
() автор топика

ssh нормально обрабатывает tar на stdout. Это стандартная функциональность. Добавте в ssh ключ -v и измените команду:

cd $tempdir ; tar -xf -
на
cd $tempdir && tar -xf -

andreik
()

Так ну в общем-то варианты решения есть, спасибо всем! Хотелось бы услышать причину, почему стало так происходить.

Michael89
() автор топика

Таки нашел проблему... и таки да это потери... Между серваками находится гейт на таком же линуксе. Файлы пропадают когда гейт нагружает zebra. Спасибо команде mtr)

Michael89
() автор топика
3 декабря 2014 г.

И в итоге проблема была не в потерях, а в том что скрипт был прописан в cron в двух местах.

Michael89
() автор топика
Ответ на: комментарий от Michael89

Кстати забавно, спасибо за итог.

Deleted
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.