Я могу запустить следующий сценарий оболочки из командной строки, как и ожидалось:
/bin/sh -xv /home/shantanu/backup_transfer.sh
Но когда я устанавливаю его в cron, он не выполняется правильно. Есть 2 команды. ssh -t abc@10.10.10.100 "sudo ls" и sudo rsync -avze на другой сервер.
Почему сценарий оболочки не работает в cron, если он успешно запускается из командной строки?
$ which sh
/bin/sh
Я использую правильную среду?
Обновить:
Error for the first ssh -t command:
Pseudo-terminal will not be allocated because stdin is not a terminal.
sudo: sorry, you must have a tty to run sudo
Error for the second sudo rsync command:
sudo: sorry, you must have a tty to run sudo
Нет ошибок при запуске сценария в командной строке.
Чтобы исправить ошибку sudo tty, вам необходимо изменить файл / etc / sudoers на хосте, на котором вы запускаете команду sudo.
#Here is an example of how to turn off the requirement of a tty for a user called "USERNAME"
Defaults:USERNAME !requiretty
Лучше всего обновить / etc / sudoers и вставить! Requiretty. Однако в некоторых случаях у вас может не быть доступа к удаленной системе для включения / отключения requiretty в / etc / sudoers.
В этих ситуациях вы можете использовать двойной tt как обходной путь. Двойной tt работает даже в cron.
ssh -tt user@remoteserver /some/dir/remotecommand