Ich führe regelmäßig ein Shell-Skript über Crontab aus, das SSH verwendet, um eine Verbindung zu einem Server herzustellen. Wenn ich das Skript manuell ausführe, läuft es erfolgreich. Innerhalb derselben Sitzung wird es auch von Crontab erfolgreich ausgeführt. Aber wenn ich meinen Computer neu starte und warte, bis Crontab das Skript startet, schlägt es fehl.
Sowohl mein Computer als auch der Server, mit dem ich mich verbinde, haben Schlüssel voneinander, die kein Passwort erfordern.
SSH-Befehl in meinem Skript:
ssh -i /home/myuser/.ssh/id_rsa -t -t myuser@servername 'some-script-on-the-server'
Crontab-Befehl:
45 10 * * * root sudo -u myuser my-local-script
Ich dachte, ich könnte dieses Problem lösen, indem ich den SSH-Befehl angebe, -i /home/myuser/.ssh/id_rsa
aber danach hat es immer noch nicht funktioniert.
Die Ausgabe /var/log/syslog
lautet:
May 23 11:06:01 mycomputer CRON[1254]: (root) CMD (sudo -u myuser my-local-script)
May 23 11:06:01 mycomputer CRON[1252]: (CRON) info (No MTA installed, discarding output)
Was ist das Problem?
Antwort1
"Kein MTA installiert" bedeutet, dass Sie in Ihrem Skript möglicherweise eine E-Mail senden möchten, aber kein MTA (Mail Transfer Agent) angegeben wurde. Der Cron-Daemon versucht tatsächlich, Ihnen Ausgaben zu senden. Sie können einen MTA (wie Postfix) installieren oder, wenn Ausgaben nicht wichtig sind, auf "/dev/null 2>&1" umleiten.