script de shell dentro de crontab

script de shell dentro de crontab

Puedo ejecutar el siguiente script de shell desde el símbolo del sistema como se esperaba:

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

Pero cuando lo configuro en un cron, no se ejecuta correctamente. Hay 2 comandos. ssh-t[correo electrónico protegido]"sudo ls" y sudo rsync -avze a otro servidor.

¿Por qué fallaría un script de shell en un cron cuando se ejecuta correctamente en el símbolo del sistema?

$ which sh
/bin/sh

¿Estoy utilizando el entorno correcto?

Actualizar:

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

No se produjo ningún error al ejecutar el script en el símbolo del sistema.

Respuesta1

Para corregir el error sudo tty, debe modificar el archivo /etc/sudoers en el host en el que está emitiendo el comando sudo.

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

Respuesta2

Actualizar /etc/sudoers e insertar !requiretty es la mejor opción. Sin embargo, en ciertos casos es posible que no tenga acceso en el sistema remoto para habilitar/deshabilitar requiretty en /etc/sudoers.

En estas situaciones, puede utilizar un doble tt como solución alternativa. Un doble tt incluso funciona en cron.

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

información relacionada