Shell-Skript innerhalb von Crontab

Shell-Skript innerhalb von Crontab

Ich kann das folgende Shell-Skript wie erwartet von der Eingabeaufforderung aus ausführen:

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

Aber wenn ich es in einem Cron einstelle, wird es nicht richtig ausgeführt. Es gibt 2 Befehle. ssh -t[email geschützt]„sudo ls“ und sudo rsync -avze zu einem anderen Server.

Warum würde ein Shell-Skript in einem Cron fehlschlagen, wenn es in der Eingabeaufforderung erfolgreich ausgeführt wird?

$ which sh
/bin/sh

Verwende ich die richtige Umgebung?

Aktualisieren:

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

Beim Ausführen des Skripts in der Eingabeaufforderung ist kein Fehler aufgetreten.

Antwort1

Um den Sudo-TTY-Fehler zu beheben, müssen Sie die Datei /etc/sudoers auf dem Host ändern, auf dem Sie den Sudo-Befehl ausführen.

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

Antwort2

Die beste Option besteht darin, /etc/sudoers zu aktualisieren und !requiretty einzufügen. In bestimmten Fällen haben Sie jedoch möglicherweise keinen Zugriff auf das Remote-System, um requiretty in /etc/sudoers zu aktivieren/deaktivieren.

In diesen Situationen können Sie als Workaround ein doppeltes tt verwenden. Ein doppeltes tt funktioniert sogar in cron.

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

verwandte Informationen