Raspberry Pi joy-it-Gehäuse

Systeminformationen in Datenbank schreiben


Quellen:
J. Wagner, Gewerbliche Schule Bad Mergentheim, 2021
T. Heine, A. Mundt, Cisco Networking Academy, 2021


Systeminformationen des Raspberry Pi werden gesammelt und mit Hilfe eines Bashskripts in eine Datenbank geschrieben.

Dazu benötigt man folgende Serverarten: Webserver mit PHP und Datenbankserver.

Datenbank einrichten

Datenbank und User anlegen
~ $ sudo mysql
> create database systeminfo;
> show databases;
> create user 'systeminfo'@'localhost' identified by 'raspberry';
> grant all privileges on systeminfo.* to 'systeminfo'@'localhost';
> flush privileges;
> exit

Erstellen der Tabelle mit Datum und vier Messwerten
~ $ mysql -u systeminfo -praspberry
> show databases;
> use systeminfo;
> create table systemvalues (pkdate datetime not null primary key, temp float, avgload1 float, avgload5 float, avgload15 float);
> select * from systemvalues;

Datenbankeintrag mit Bashskript

Erstellen der Bashskriptdatei.
~ $ nano systeminfo2db.sh


#!/bin/bash
#Temperaturwert filtern und auf Variable speichern
temp=$(vcgencmd measure_temp | cut -d= -f2 |cut -d\' -f1)
#Durschnittliche Prozessorlast nach 1, 5 und 15 min 
#filtern und auf Variable speichern
avgload1=$(cat /proc/loadavg | cut -d" " -f1)
avgload5=$(cat /proc/loadavg | cut -d" " -f2)
avgload15=$(cat /proc/loadavg | cut -d" " -f3)

mysql -u systeminfo -praspberry <<EOF
use systeminfo;
insert into systemvalues (pkdate, temp, avgload1, avgload5, avgload15) values(now(), $temp, $avgload1, $avgload5, $avgload15);
EOF

Skript ausführbar machen.
~ $ chmod +x systeminfo2db.sh

Testen des Bashskripts
~ $ ./systeminfo2db.sh
~ $ mysql -u systeminfo -p raspberry
> use systeminfo;
> select * from systemvalues;


Bashskript mit Cronjob alle 15 s ausführen

Crontab editiern
~ $ crontab -e

Folgende Werte einfügen:


* * * * * /home/pi/systeminfo2db.sh
* * * * * sleep 15; /home/pi/systeminfo2db.sh
* * * * * sleep 30; /home/pi/systeminfo2db.sh
* * * * * sleep 45; /home/pi/systeminfo2db.sh
Datei speichern und den Editor mit Strg + X verlassen.

Übung 1 Welche Aussage ist wahr?

Wähle die korrekten Aussagen aus.

Nenne die Endung einer Bashscript-Datei.
Wähle eine Antwort.

  1. .bs
  2. .sh
  3. .exe
  4. .html


Speicher in Bashscript einen Wert auf einer Variablen.
Wähle eine Antwort.

  1. $x = ...
  2. x = ...
  3. int x = ...
  4. x = $(...)

Mache die Datei info.sh ausführbar.
Wähle eine Antwort.

  1. ~ $ chmod +w info.sh
  2. ~ $ chmod +r info.sh
  3. ~ $ chmod 755 info.sh
  4. ~ $ chmod 111 info.sh


Schreibe einen Kommentar in Bashscript.
Wähle eine Antwort.

  1. #Kommentar
  2. /*Kommentar*/
  3. <!-- Kommentar -->
  4. //Kommentar

Aus der Anzeige volt=0.8600V soll der Wert ausgeschnitten werden. Wähle eine Antwort.

  1. ~ $ vcgencmd measure_volts |cut -d= -f1 |cut -dV -f2
  2. ~ $ vcgencmd measure_volts |cut -d= -f2 |cut -dV -f1
  3. ~ $ vcgencmd measure_volts |cut -d= -f2
  4. ~ $ vcgencmd measure_volts |cut -dV -f2 |cut -d' -f1


Nenne die beiden Codewörter zwischen denen in Bashscript ein sql-Befehl steht. Wähle eine Antwort.

  1. <<SQL ... SQL
  2. << ... <<
  3. insert ... insert
  4. <<EOF ... EOF

Editiere Cronjob.
Wähle eine Antwort.

  1. ~ $ crontab -e
  2. ~ $ cronjob
  3. ~ $ cronjob -e
  4. ~ $ cronjob -e -d


Die Datei info.sh soll jede volle Stunde ausgeführt werden.
Wähle eine Antwort.

  1. * 0 * * * /home/pi/info.sh
  2. * 1 * * * /home/pi/info.sh
  3. 0 * * * * /home/pi/info.sh
  4. * * * * * /home/pi/info.sh

Übung 2 bash script

Im ersten Schritt wird ein User und die Tabelle in der Datenbank angelegt.

  1. Erstelle die Datenbank systeminformation.
  2. Lege den User systeminfo an und gib ihm alle notwendigen Rechte.
  3. Erstelle eine Tabelle für einen Zeitstempel, Temperaturwert und drei Auslastungswerten des Prozessors.

Im zweiten Schritt wird eine Bashscript-Datei erstellt und die Daten damit in die Datenbank geschrieben.

  1. Erstelle die Datei systeminfo2db.sh.
  2. Speicher den Temperaturwert und die durschnittliche Prozessorlast auf den Variablen temp, avgload1, avglod5, avgload15.
  3. Mache die Skriptdatei systeminfo2db.sh ausführbar.
  4. Schreibe die Werte alle 15 s in die Datenbank.