Удаленная система каждые 5 минут генерирует файлы статистики и помещает их в определенный каталог. В любой момент времени в этом каталоге находится более 1000 файлов. Каждые 5 минут я хочу копировать самый новый файл на свой сервер для анализа. Проблема, с которой я столкнулся, заключается в том, что файлы в удаленной системе не доступны для чтения «всем», и удаленный системный администратор не хочет предоставлять мне доступ к логину, который может их читать, потому что у этого логина есть разрешения на запись, которых у меня нет. необходимость.
Системный администратор не возражает предоставить мне доступ для чтения ко всей системе.
Я успешно использовал эту команду каждые 5 минут:
rsync -az -e "ssh -tt" --rsync-path="sudo rsync" REMOTE_SYSTEM:/var/logs/ .
У меня нет доступа к / etc / sudoers, поэтому я не знаю точных настроек «tty_require» и «tty_tickets». Когда я изначально настроил его -t не сработало но -tt сделал .... не уверен в точной разнице.
Эта команда работала месяцами, пока мы не обновили наш локальный сервер с Redhat5.11 -> CentOS6.6. Теперь я получаю ошибку:
tcgetattr: Invalid argument
unexpected tag 87 [receiver]
rsync error: error in rsync protocol data stream (code 12) at io.c(1134) [receiver=3.0.6]
Версия / протокол RSYNC одинаковы при обновлении на обоих серверах. Версия SSH изменилась с OpenSSH_4.3p2 на OpenSSH_5.3p1 с обновлением CentOS.
Google ничего не дал для "тега 87". Сменить sudoers в удаленной системе сложно.
Я не привязан к этому решению, но оно работало до обновления и соответствовало требованиям. Если я могу решить эту проблему, настроив параметры на своей стороне, это предпочтительнее, чем заставить системного администратора внести изменения на своей стороне. Я полагаю, что могу использовать исходный код RSYNC и отладить / исправить проблему, но параметры настройки гораздо более желательны.
Другие предложения приветствуются!
Я думаю ты не можешь использовать ssh -tt
с помощью rsync.
От RedHat Bugzilla (Ошибка 1019923, создан 16.10.2013, ответил 17.10.2013 Павел Шимерда):
Я не думаю, что такие инструменты, как rsync, обычно готовы передавать данные через псевдотерминал, и я бы не ожидал, что это сработает. Передачи, которые выполняет rsync, имеют двоичную природу, и любой уровень, который работает со специальными символами, естественно, нарушает это.
Мне интересно узнать причину использования двойного '-t', поскольку это означает принудительное выделение TTY, даже если это явно не имеет смысла (например, локальная сторона - это демон, который хочет передавать данные, а не терминал сеанс).
Есть ли какая-либо причина использовать '-tt', кроме намеренного нарушения любого двоичного протокола через транспорт SSH (например, в целях тестирования)?
Мое единственное предложение - отключить requiretty
только для одного пользователя, см. sudoers: как отключить requiretty для каждого пользователя.