_anonymous0815_
Lt. Commander
- Registriert
- Aug. 2020
- Beiträge
- 1.406
Guten Abend liebe Computerbase-Foristen,
ich habe mir in den letzten 3 Tagen ein Skript zusammengestellt, was überprüfen soll, ob ein Docker Container online ist und wenn nicht, mir eine E-Mail schicken soll.
Jetzt funktioniert das Skript unter der Prämisse, wenn ich es in einer Shell ausführe, aber nicht als eingetragenes Skript in der crontab.
PS: Ja, ich verwende im Skript ssmtp, welches zurzeit nicht weiterentwickelt wird, das werde ich vermutlich dann noch ändern, wenn das Skript erst mal funktional ist.
Anbei das Skript im Spoiler
Im zweiten Spoiler packe ich die Fehlermeldung aus journalctl -xe
Er scheint die letzte if-Bedingung nicht richtig abzuarbeiten und versucht jedes Mal eine E-Mail zu versenden, wenn das Skript aufgerufen wird (minütlich), was aber immer fehlschlägt.
ich habe mir in den letzten 3 Tagen ein Skript zusammengestellt, was überprüfen soll, ob ein Docker Container online ist und wenn nicht, mir eine E-Mail schicken soll.
Jetzt funktioniert das Skript unter der Prämisse, wenn ich es in einer Shell ausführe, aber nicht als eingetragenes Skript in der crontab.
PS: Ja, ich verwende im Skript ssmtp, welches zurzeit nicht weiterentwickelt wird, das werde ich vermutlich dann noch ändern, wenn das Skript erst mal funktional ist.
Anbei das Skript im Spoiler
Bash:
if type ssmtp &> /dev/null;
then
echo "ssmtp ist bereits installiert!"
else
echo "Installiere ssmtp"; apt install -y ssmtp
fi
if type sendmail &> /dev/null;
then
echo "sendmail ist bereits installiert!"
else
echo "Installiere sendmail"; apt install -y sendmail
fi
PoS1="$(pwd)"
PoS2="$(basename $0)"
PathOfScript="$PoS1/$PoS2"
if [ -z "$PS1" ];
then
echo "Interaktive Shell"
echo "Gib die Konfigurationsdaten für den Mailserver an, von dem die E-Mail verschickt werden soll.";
Sender=" "
Passwd=" "
SmtpServer=" "
IFS='@'
Empfaenger=" "
echo "Gib deine Sender-E-Mail ein:";
read Sender
read -a strarr <<<"$Sender"
rewriteDomain="${strarr[1]}"
echo "Gib dein E-Mail Passwort ein:";
read -s Passwd
echo "Gib den SMTP-Server deines Providers (z.B. smtp.1und1.de:587) ein:"
read SmtpServer
echo "Gib die Empfaenger-E-Mail ein:";
read Empfaenger
mv /etc/ssmtp/ssmtp.conf /etc/ssmtp/ssmtp.conf.old
chmod 640 /etc/ssmtp/ssmtp.conf.old
install -m 640 /dev/null /etc/ssmtp/ssmtp.conf
echo "root=$Sender">>/etc/ssmtp/ssmtp.conf
echo "mailhub=$SmtpServer">>/etc/ssmtp/ssmtp.conf
echo "rewriteDomain=$rewriteDomain">>/etc/ssmtp/ssmtp.conf
echo "AuthUser=$Sender">>/etc/ssmtp/ssmtp.conf
echo "AuthPass=$Passwd">>/etc/ssmtp/ssmtp.conf
echo "AuthMethod=LOGIN">>/etc/ssmtp/ssmtp.conf
echo "UseSTARTTLS=YES">>/etc/ssmtp/ssmtp.conf
echo "FromLineOverride=YES">>/etc/ssmtp/ssmtp.conf
echo "hostname=[ICODE]hostname[/ICODE]">>/etc/ssmtp/ssmtp.conf
chfn -f [ICODE]hostname[/ICODE] root
echo "To:$Empfaenger">"$(pwd)/email.txt"
echo "From:$(hostname)@$(whoami).de">>"$(pwd)/email.txt"
echo "Subject:Docker Storagenode-Container ist offline!">>"$(pwd)/email.txt"
echo "">>"$(pwd)/email.txt"
echo "Docker meldet zurueck, dass der Container offline ist.">>"$(pwd)/email.txt"
if crontab -l | grep [ICODE]basename $0[/ICODE] &> /dev/null;
then
echo "Cronjob ist in Crontab eingetragen!"
else
echo "Cronjob wird in Crontab eingetragen."
CrontabEntry="* * * * * $PathOfScript"
(crontab -u $(whoami) -l; echo "$CrontabEntry" ) | crontab -u $(whoami) -
fi
fi
if [ ! -f "$(pwd)/sent-mail" ];
then
touch -t 200001011500 "$(pwd)/sent-mail"
fi
if [ "$(docker ps -a | awk 'NR==2 {print $7}')" != "Up" ];
then
if [ $(find "$(pwd)/sent-mail" -mmin +60 -print) ]
then
/usr/sbin/sendmail -t < "$(pwd)/email.txt" && touch "$(pwd)/sent-mail"
fi
fi
Im zweiten Spoiler packe ich die Fehlermeldung aus journalctl -xe
Er scheint die letzte if-Bedingung nicht richtig abzuarbeiten und versucht jedes Mal eine E-Mail zu versenden, wenn das Skript aufgerufen wird (minütlich), was aber immer fehlschlägt.
Apr 29 19:36:01 storjvm CRON[48918]: (root) CMD (/root/storj-mail.sh)
Apr 29 19:36:01 storjvm sSMTP[48924]: Creating SSL connection to host
Apr 29 19:36:02 storjvm sSMTP[48924]: SSL connection using ECDHE_RSA_AES_256_GCM_SHA384
Apr 29 19:36:03 storjvm cron[48924]: sendmail: 554 For explanation visit https://www.ionos.com/help/index.php?id=2425&ip=xxxxxxx&c=hd
Apr 29 19:36:03 storjvm sSMTP[48924]: 554 For explanation visit https://www.ionos.com/help/index.php?id=2425&ip=xxxxxxxx&c=hd
Apr 29 19:36:03 storjvm CRON[48917]: (root) MAIL (mailed 164 bytes of output but got status 0x0001 from MTA
Apr 29 19:36:01 storjvm sSMTP[48924]: Creating SSL connection to host
Apr 29 19:36:02 storjvm sSMTP[48924]: SSL connection using ECDHE_RSA_AES_256_GCM_SHA384
Apr 29 19:36:03 storjvm cron[48924]: sendmail: 554 For explanation visit https://www.ionos.com/help/index.php?id=2425&ip=xxxxxxx&c=hd
Apr 29 19:36:03 storjvm sSMTP[48924]: 554 For explanation visit https://www.ionos.com/help/index.php?id=2425&ip=xxxxxxxx&c=hd
Apr 29 19:36:03 storjvm CRON[48917]: (root) MAIL (mailed 164 bytes of output but got status 0x0001 from MTA