Rasperry Pi Status per E-Mail

In meinem Beitrag ➡ Systeminformationen beim Login auf der Konsole ausgeben beschreibe ich, wie man Systemstatusinformationen bei jedem Login auf der Konsole ausgegeben bekommt. Da man aber nicht immer die Konsole zu Hand hat ist oftmals etwas unpraktisch. Da einer meiner Pis als Überwachungskameras im Einsatz ist, wollte ich in regelmäßigen Abständen einen Statusbericht per E-Mail erhalten.

Bevor ihr hier weitermachen könnt, wird ein funktionierender MTA auf dem Pi benötigt, der für euch die E-Mail an ein definiertes Postfach versenden kann. Falls ihr das noch nicht konfiguriert habt, schaut euch doch mal die folgende Anleitung hier im Blog an ➡ Motion mit E-Mail-Versand, dort wird die Installation und Konfiguration von Postfix beschrieben.

Funktioniert der E-Mail-Versand, dann könnt ihr das folgende Skript auf euren Pi kopieren. Es ist dabei zu beachten, dass manche Befehle nur als sudo/root auszuführen sind. Ihr könnt das Script damit z.B. in das Verzeichnis /bin/status kopieren.
Ich habe das Skript jedoch in das home-Verzeichnis des Pi-Nutzers gelegt. Hierbei ist darauf zu achten, dass zum editieren keine besonderen Rechte vorhanden sind und ggf. andere Benutzer das Skript um weitere Befehle erweitern könnten.

Also Skript anlegen und den Inhalt hinein kopieren:

sudo nano /bin/status/syssstatus.sh

#!/bin/bash

rm /var/log/status.log

echo "Statusanzeige" >> /var/log/status.log
date >> /var/log/status.log
uname -a >> /var/log/status.log
uptime >> /var/log/status.log
echo "" >> /var/log/status.log
echo "" >> /var/log/status.log
echo "Logged In Users" >> /var/log/status.log
users >> /var/log/status.log
echo "" >> /var/log/status.log
echo "Temparature (1/1000)" >> /var/log/status.log
cat /sys/devices/virtual/thermal/thermal_zone0/temp >> /var/log/status.log
echo "" >> /var/log/status.log
echo "" >> /var/log/status.log
echo "Hard drive" >> /var/log/status.log
free >> /var/log/status.log
echo "" >> /var/log/status.log
echo "" >> /var/log/status.log
df -h >> /var/log/status.log
echo "" >> /var/log/status.log
echo "" >> /var/log/status.log
echo "CPU Frequency Kilohertz" >> /var/log/status.log
cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq >> /var/log/status.log
echo "" >> /var/log/status.log
echo "CPU Voltage" >> /var/log/status.log
vcgencmd measure_volts core >> /var/log/status.log
echo "" >> /var/log/status.log
echo "" >> /var/log/status.log
echo "Loads" >> /var/log/status.log
echo "[1min] - [5min] - [15min]" >> /var/log/status.log
cat /proc/loadavg >> /var/log/status.log
echo "" >> /var/log/status.log
echo "" >> /var/log/status.log
echo "Memory" >> /var/log/status.log
cat /proc/meminfo >> /var/log/status.log
echo "" >> /var/log/status.log
echo "" >> /var/log/status.log
echo "Eth0 sent & received" >> /var/log/status.log
cat /sys/class/net/eth0/statistics/tx_bytes /sys/class/net/eth0/statistics/rx_bytes >> /var/log/status.log
echo "" >> /var/log/status.log
echo "" >> /var/log/status.log
echo "WLAN0 sent & received" >> /var/log/status.log
cat /sys/class/net/wlan0/statistics/rx_bytes /sys/class/net/wlan0/statistics/tx_bytes >> /var/log/status.log

echo 'Your Raspispy reports its status.' | mail -a /var/log/status.log -s "Raspispy - Sysstatus"  < /var/log/status.log

Das Skript ausführbar machen

sudo chmod +x /bin/status/syssstatus.sh

Zum Abschluss tragt ihr noch einen Cron-Job ein, damit das Skript in regelmäßigen Abständen ausgeführt wird.

sudo crontab -e

In diesem Beispiel wird das Skript automatisch um 8 Uhr ausgeführt und sendet eine Nachricht an die angegebenen E-Mail-Adresse:

0 8 * * * /bin/bash /bin/status/syssstatus.sh

Weitere Hilfe zum Anlegen von Cron-Jobs findet ihr in meinem Beitrag ➡ Automatisches Update mit Reboot mit Hilfe eines Cron-Jobs


Gib mir gerne einen Kaffee ☕ aus!

Wenn dir meine Beiträge gefallen und geholfen haben, dann kannst du mir gerne einen Kaffee ☕ ausgeben.

PayPal Logo


liberapay.com/strobelstefan.org


Kaffee via Bitcoin

bc1qfuz93hw2fhdvfuxf6mlxlk8zdadvnktppkzqzj


Nachtrag vom September 2019

Kürzlich habe ich bei all meinen Raspberry Pis ein Upgrade auf das aktuellste Betriebssystem "Raspbian Buster" durchgeführt. Bei dieser Gelegenheit habe ich das obige Skript angepasst, so dass ich künftig in der Statusmeldung auch die Distributionsinformationen erhalte.
Ich habe die folgenden zwei Zeilen eingegeben:

echo "Raspbian Informationen"
cat /etc/os-release >> /var/log/status.log

Aktualisiertes Skript zum Oktrober 2018 mit Variablen

#!/bin/bash

# E-Mail Address
EMAIL='mail@mail.de'

#Location of Log File
LOGFILE='/var/log/status.log'

rm ${LOGFILE}

echo "Statusanzeige" >> ${LOGFILE}
date >> ${LOGFILE}
uname -a >> ${LOGFILE}
uptime >> ${LOGFILE}
echo "" >> ${LOGFILE}
echo "" >> ${LOGFILE}
echo "Logged In Users" >> ${LOGFILE}
users >> ${LOGFILE}
echo "" >> ${LOGFILE}
echo "Temparature (1/1000)" >> ${LOGFILE}
cat /sys/devices/virtual/thermal/thermal_zone0/temp >> ${LOGFILE}
echo "" >> ${LOGFILE}
echo "" >> ${LOGFILE}
echo "Hard drive" >> ${LOGFILE}
free >> ${LOGFILE}
echo "" >> ${LOGFILE}
echo "" >> ${LOGFILE}
df -h >> ${LOGFILE}
echo "" >> ${LOGFILE}
echo "" >> ${LOGFILE}
echo "CPU Frequency Kilohertz" >> ${LOGFILE}
cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq >> ${LOGFILE}
echo "" >> ${LOGFILE}
echo "CPU Voltage" >> ${LOGFILE}
vcgencmd measure_volts core >> ${LOGFILE}
echo "" >> ${LOGFILE}
echo "" >> ${LOGFILE}
echo "Loads" >> ${LOGFILE}
echo "[1min] - [5min] - [15min]" >> ${LOGFILE}
cat /proc/loadavg >> ${LOGFILE}
echo "" >> ${LOGFILE}
echo "" >> ${LOGFILE}
echo "Memory" >> ${LOGFILE}
cat /proc/meminfo >> ${LOGFILE}
echo "" >> ${LOGFILE}
echo "" >> ${LOGFILE}
echo "Eth0 sent & received" >> ${LOGFILE}
cat /sys/class/net/eth0/statistics/tx_bytes /sys/class/net/eth0/statistics/rx_bytes >> ${LOGFILE}
echo "" >> ${LOGFILE}
echo "" >> ${LOGFILE}
echo "WLAN0 sent & received" >> ${LOGFILE}
cat /sys/class/net/wlan0/statistics/rx_bytes /sys/class/net/wlan0/statistics/tx_bytes >> ${LOGFILE}

echo 'Your Raspispy reports its status.' | mail -a ${LOGFILE} -s "Raspispy - Sysstatus"  ${EMAIL} < ${LOGFILE}

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert