rsync передача пароля из скрипта

Автор sonny363, 17 октября 2022, 05:08:48

« назад - далее »

0 Пользователи и 2 гостей просматривают эту тему.

sonny363

Добрый день!
В скрипте запускаются последовательно три сессии rsync.
Логины для ssh-подключения в скрипте прописаны.
Вопрос: можно ли передать внутрь rsync пароль для подключения?
То есть, я бы хотел так: запускаю скрипт с паролем в качестве параметра, а он передаётся во все эти подключения.

Сейчас приходится три раза вводить пароль :)

dzhoser

#1
Можно
sudo apt-get install sshpass

/usr/bin/rsync -ratlz --rsh="/usr/bin/sshpass -p password ssh -o StrictHostKeyChecking=no -l username" src_path  dest_path
Ubuntu->Linux mint->Astra Linux SE->Debian 12
Для новичков

sonny363

#2
dzhoser,спасибо, попробую.

Хм-м... на ключ ругается: Permission denied (publickey).

PbI6A

#3
Есть такая шняжка:
rsync --password-file=/etc/rsync_password -A -av --delete --exclude lost+found --exclude bk rsync://login@h.o.s.t:/shares/ /shares>/dev/null
Работала замечательно до какого-то момента, не уследил, до какого, потому что работало по cron-у.

Недавно проводил проверки "всего и вся", обнаружил, что больше это не работает:
rsync: [Receiver] failed to connect to h.o.s.t (h.o.s.t): Connection refused (111)
rsync error: error in socket IO (code 10) at clientserver.c(139) [Receiver=3.2.7]

Полез читать, wtf? Наткнулся на то, что rsync использует в качестве транспорта ssh, а ssh не хочет кушать пароли в таком непотребном виде (раньше проблем не возникало!). И тоже, нашёл вот это вот:
Цитата: dzhoser от 17 октября 2022, 06:12:34install sshpass
И попробовал с десяток вариантов, как это вкорячить, но пока не взлетело  :-[
У кого-нибудь получилось? Сервер Debian 11, Devuan 5 - один фиг. Подскажите!

18 октября 2023, 17:04:17
...кстати, вот сейчас полез в /etc/default/rsync, что-то накатило, знаете ли...
И вижу там буквально следующее:
RSYNC_ENABLE=false
И как-то подумалось, а не в этом ли затесался косячок?
Посмотрел, какой-то шальной апдейт поменял его на дефолтовый, а там ещё и /etc/rsyncd.conf упоминался... Поставил обратно старый конфиг, стало по-другому:
rsync: did not see server greeting
rsync error: error starting client-server protocol (code 5) at main.c(1675) [Receiver=3.1.3]

Полагаю, что теперь уже можно и с sshpass поколдовать?

18 октября 2023, 17:35:03
Понял, в чём бредятина :)
--password-file=/etc/rsync_password - это относилось к какой-то старой версии, которая работала через ssh://

rsync://login@h.o.s.t - это не относится к ssh, а относится конкретно к протоколу rsync, его транспорт. Если используется rsync://login@h.o.s.t, то --password-file=/etc/rsync_password вообще не при делах. У меня были два вида скриптов для ручной синхронизации, где набираешь пароль от пользователя ssh и используется там просто login@h.o.s.t без rsync://, и автоматический скрипт, который работает автоматически по rsync:// без ssh.

Короче, всё понял, всё наладил. Поломка была в подмене /etc/default/rsync.
LINUX means: Linux Is Not a UniX
Вернулся на Devuan. Счастлив!

sonny363

У меня вот это вполне работает. Дебиан 11-й на обоих сторонах.

/usr/bin/rsync -avz --progress --delete --password-file=/etc/rsyncd.scrt ${srv_u
ser}@${srv_ip}::${srv_dir} ${syst_dir}${srv_name}/current/ --backup --backup-dir
=${syst_dir}${srv_name}/increment/`date +%Y-%m-%d`/