#!/bin/bash HOSTS="IP1 IP2 IP3 IP4 IP5" COUNT=4 pingtest(){ for myHost in "$@" do ping -c "$COUNT" "$myHost" && return 1 done return 0 } if pingtest $HOSTS then # 100% failed echo "Server failed at $(date)" | mail -s "Server Down" myadress@gmail.com echo "All hosts ($HOSTS) are down (ping failed) at $(date)" fi
Vervang IP1, IP2, etc met de IP adressen van de Raspberry Pi(s) je wilt monitoren. Bijvoorbeeld :
Je kan er zoveel als je wilt toevoegen. Minimaal 1 uiteraard
Vervang “myaddress@gmail.com” met het emailadres waar het bericht naartoe moet worden gestuurd.
Noem het script iets van “checkrasp.sh”, geef het execute rechten (chmod +x checkrasp.sh). Zorg ervoor dat je precies weet waar het staat. Voer “pwd” uit om je huidige volledige pad te tonen.
Test het script even door een IP adres toe te voegen wat niet in gebruik is..! (Dat kan je doen door “./checkrasp.sh” uit te voeren in de directory waar het script staat) Als het niet werkt, dan heeft het waarschijnlijk te maken met de mail server configuratie etc…
Voeg dan een crontab entry toe, welke het script regelmatig uitvoert:
crontab -e
en dan toevoegen aan het einde van het bestand, op een nieuwe regel:
*/5 * * * * /home/con/checkrasp.sh
Ervan uitgaande dat het script dus checkrasp.sh heet, en in /home/con staat . Deze regel zal het script elke 5 minuten uitvoeren. Wil je het elke minuut uit laten voeren, verwijder dan “/5” in de regel. Je kan https://crontab.guru/ gebruiken om de syntax van het begin van de regel uit te vogelen.
Inloggen als con, dan “sudo su -” uitvoeren om root te worden.
Daarna “dpkg-reconfigure postfix” uitvoeren.
Volgende opties selecteren;
Vraag 1: Internet site
Vraag 2: standaard accepteren, hier staat waarschijnlijk de computer naam reeds ingevult
Vraag 3: Of leeg laten, of de naam van je account van de domoticz server invullen. (Waarschijnlijk dus “con” )
Vraag 4: Accepteren wat er reeds staat ingevuld. Er zou moeten staan naam van de computer, localhost.localdomain, localhost
Vraag 5: Standaard accepteren
Vraag 6: Standaard accepteren. Zou moeten wezen: 127.0.0.1/8, [::ffff:127.0.0.0]/104, [::1]/128
Vraag 7: 0
Vraag 8: <leeg> (Als er wat staat, leeg maken dus)
Vraag 9: All (niet zeker van de nederlandse vertaling, maar niet “ipv4” of “ipv6” kiezen)
Dan heb je een standaard postfix config die gewoon zou moeten werken…
Heb het nog niet spits;
con@Ubuntu:~$ ./pingPI.sh PING 192.168.8.2 (192.168.8.2) 56(84) bytes of data. From 192.168.8.119 icmp\_seq=1 Destination Host Unreachable From 192.168.8.119 icmp\_seq=2 Destination Host Unreachable From 192.168.8.119 icmp\_seq=3 Destination Host Unreachable From 192.168.8.119 icmp\_seq=4 Destination Host Unreachable --- 192.168.8.2 ping statistics --- 4 packets transmitted, 0 received, +4 errors, 100% packet loss, time 3049ms pipe 4 mail: cannot send message: Process exited with a non-zero status All hosts (192.168.8.2) are down (ping failed) at zo 27 dec 2020 23:34:38 CET
mail: cannot send message: Process exited with a non-zero status
Zal even wat shotjes maken.
Even een aanvulling van mijn logfile /var/log/mail.err;
Dec 27 23:37:41 Ubuntu sSMTP[13586]: Unable to locate mail Dec 27 23:37:41 Ubuntu sSMTP[13586]: Cannot open mail:25
Voer eens “which mail” uit? Is “mail” beschikbaar op het systeem? Zo niet, voer dan als root “apt install mailutils” uit
Het resultaat is het volgende;
con@Ubuntu:~$ which mail /usr/bin/mail con@Ubuntu:~$ mail Cannot open mailbox /var/mail/con: Permission denied No mail for con con@Ubuntu:~$ cd /var/mail con@Ubuntu:/var/mail$ ls -l total 4 -rwxrwxrwx 1 mail mail 2299 dec 27 23:21 mail -rw------- 1 root mail 0 dec 28 16:11 root
“apt install mailutils” bracht geen soelaas helaas..
Er waren een paar problemen, maar de hoofdproblemen waren:
Je gebruikt binnen je eigen netwerk IPv4 & IPv6, echter was de externe mailserver niet bereikbaar op IPv6. Dus dat heb ik omgezet naar alleen IPv4
Postfix was ingesteld om ook je externe domein te accepteren als domein. Dus alle email die naar je externe domein toe moest gaan verliet nooit de lokale server
De email gegenereerd door het mail programma wordt gezien als spam door spamfilters… Dus uiteindelijk op je gmail account ingesteld dat email van dat specifieke adres niet wordt gezien als spam