script de shell dentro do crontab

script de shell dentro do crontab

Posso executar o seguinte script de shell no prompt de comando conforme esperado:

/bin/sh -xv /home/shantanu/backup_transfer.sh 

Mas quando eu configuro em um cron, ele não executa corretamente. Existem 2 comandos. ssh-t[e-mail protegido]"sudo ls" e sudo rsync -avze para outro servidor.

Por que um script de shell falharia em um cron quando executado com êxito no prompt de comando?

$ which sh
/bin/sh

Estou usando o ambiente correto?

Atualizar:

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

Nenhum erro ao executar o script no prompt de comando.

Responder1

Para corrigir o erro sudo tty, você precisa modificar o arquivo /etc/sudoers no host no qual você está emitindo o comando sudo.

#Here is an example of how to turn off the requirement of a tty for a user called "USERNAME"
Defaults:USERNAME !requiretty

Responder2

Atualizar /etc/sudoers e inserir !requiretty é a melhor opção. No entanto, em certos casos, você pode não ter acesso no sistema remoto para ativar/desativar o requiretty em /etc/sudoers.

Nessas situações, você pode usar um tt duplo como solução alternativa. Um duplo tt funciona até no cron.

ssh -tt user@remoteserver /some/dir/remotecommand

informação relacionada