it-swarm.com.de

sendmail mit cron job

Ich habe ein Skript geschrieben und alles funktioniert so gut, dass es meinen Bedürfnissen entspricht:

a=$(df -h /mnt/smb | tail -n +3 | tr -s ' ' | tr '%' ' ' | cut -d ' ' -f 5)
echo $a

if [[ $a -ge 30 ]]; then
    cat /etc/diskspace/text.txt | sendmail test.gmail.com
fi

Ich möchte dieses Skript jede Minute über Cron ausführen, siehe meine crontab:

* * * * * /etc/diskspacae/vpndrive.sh

Wie Sie sehen, möchte ich nach dem Ausführen dieses Skripts, wenn der Festplattenspeicher mehr als 80% beträgt, sendmail verwenden, um eine Benachrichtigung in meiner E-Mail zu erhalten.

Aber ich habe es nicht, als ich dieses Skript von Cron aus ausgeführt habe, und ich habe diese Fehlermeldung in /var/spool/mail/root.

ERROR Message: /etc/diskspace/vpndrive.sh line 34 : sendmail: command not found. 
4
kunal

Vergessen Sie nicht, dass das von Cron ausgeführte Skript in einer Umgebung mit einer begrenzten PATH-Variablen ausgeführt wird. Dies bedeutet, dass auf der Konsole, wenn Sie Ihr Skript testen, die Konsolen-Shell problemlos sendmail findet. Aber wenn von Cron ausgeführt wird, wird sendmail nicht gefunden.

Die beste Vorgehensweise beim Schreiben von Skripten für Cron besteht darin, den vollständigen Pfad für den Zugriff auf den Befehl anzugeben, den Sie ausführen möchten, nur um sicherzugehen.

Normalerweise wird die sendmail Binärdatei unter /usr/sbin installiert, einem Pfad, der nicht Teil der Verzeichnisse ist, nach denen Cron standardmäßig sucht. Also würde ich raten:

  1. Suchen Sie nach dem Ort von sendmail binary (locate sendmail oder find / -type f -name sendmail), wenn locate nicht installiert ist)
  2. Notieren Sie den vollständigen Pfad zum Ausführen von sendmail in Ihrem Skript
12
Benoit

Höchstwahrscheinlich ist sendmail nicht installiert.

Um es zu installieren, geben Sie Sudo apt-get install sendmail in das Terminal ein.

Besuchen Sie für die weitere Konfiguration ähnliche Frage: Wie konfiguriere ich sendmail auf Ubuntu?

1
Roomy