У меня есть стандартная функция, в которой я использую bash
для этой самой цели:
# Check if we're root and re-execute if we're not.
rootcheck () {
if [ $(id -u) != "0" ]
then
sudo "$0" "$@" # Modified as suggested below.
exit $?
fi
}
Существуют, вероятно, более изящные пути (я записал это Давным-давно!), но это хорошо работает для меня.
Для использования этой функции последовательно в сценарии необходимо передать его аргументы, полученные сценарием первоначально.
Использование: rootcheck "${@}"
(rootcheck
один не передаст аргументов функции rootcheck),
Я смог устранить эту проблему путем изменения password-file
строка к следующему:
–password-file=/cygdrive/c/cygwin/secret
Удостоверьтесь, что сделали следующее:
1) Режим изменения файла паролей к-rw-------, например, имея файл паролей C:/Custom/syncjob/pwfile в Windows, с помощью Cygwin, переходит к местоположению файла паролей:
CD/cygdrive/c/Custom/syncjob
и затем
chmod 600./pwfile
2) Также измените владение файла паролей пользователю, который выполняет rsync задание, например, 'Dave':
показанный Dave./pw
3) Это могло бы помочь относиться к файлу паролей как - файл пароля =/cygdrive/c/... как Nate записал.
Я не думаю, что необходимо изменить rsync конфигурацию.
Известное обходное решение для Windows должно добавить
<pwfile
в конец команды rsync.
Удачи.
Ни одному из вышеупомянутого не помогают. Наконец я нашел, что окончания строки pwfile должны читать следующим образом:
$ od -c pwfile 0000000 s e c r e t s \n (Unix) NOT 0000000 s e c r e t s \r \n (Windows)