Moinsen zusammen,
ich möchte, dass einige Server (theoretisch reicht auch einer, da auf allen das gleiche System läuft) jeden Morgen ein apt-get update ausführt und anschließend ein apt-get upgrade -s und mir dessen Ausgabe per Email zusendet. Da auf den Servern eh SSMTP installiert ist, vorzugsweise darüber.
Zuerst wollte ich dies über den folgenden Eintrag im crontab von root erreichen.
1 | 10 4 * * 1-5 apt-get update && echo "`apt-get upgrade -s`" | ssmtp someone@example.de |
Meinem Verständnis nach sollte diese Zeile dafür sorgen, dass von Montag bis Freitag um 4:10 Uhr die Paketlisten auf den neuesten Stand gebracht werden und danach das Ergebnis der Updatesimulation an die Emailadresse gesendet wird. In der Bash ausgeführt funktioniert dieser Befehl auch. Mittels angepasster Uhrzeit im Cronjob habe ich dann dafür gesorgt, dass der Job ausgeführt wird. Im Syslog taucht auch folgendes auf:
1 2 | Sep 5 16:49:01 localhost CRON[18731]: (root) CMD (apt-get update && echo "`apt-get upgrade -s`" | ssmtp someone@example.com) Sep 5 16:49:11 localhost sSMTP[18772]: Sent mail for root@raumobil.de (221 smtprelay05.exampleemailprovider.com closing connection) uid=0 username=root outbytes=6646 |
Allerdings, keinerlei Aktivität im Postfach.
Da in dem Crontab noch andere Jobs stehen, die mich nicht interessieren, da ein Fehlschlag nicht kritisch ist, auffällt und gelogt wird, will ich die MAILTO-Variable eigentlich nicht setzen. Auch einen extra User für diesen einen Cronjob fände ich überdimensioniert. Allerdings funktioniert das ganze auch dann nicht, wenn ich den Befehl in ein kurzes Bashscript auslagere.
1 2 3 4 5 6 7 8 9 10 11 | #! /bin/bash NOERROR=0 OPERATORMAIL=someone@example.com apt-get update if ( test $? -eq $NOERROR ); then MAILTEXT=`apt-get upgrade -s` echo "$MAILTEXT" | ssmtp $OPERATORMAIL fi |
Hier gilt das gleiche Spiel wie oben. Direkt aus der Bash gestartet, bekomme ich die Email. Per Cron gestartet, bekomme ich keine.
Weiß jemand woran das liegt, und wie man mein Vorhaben doch umsetzen kann?
Grüße Skalbjarn