Raspberry Pi joy-it

Systeminformationen in Datenbank schreiben


Ideen:
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
~ $ 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 -praspberry
> 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.

Anzeige der Systemdaten auf einer Webseite

Datenbankverbindung mit php herstellen
HTML-Seite mit folgendem php-Code ergänzen:


<?php
$username = "systeminfo";
$password = "raspberry";
$hostname = "localhost";
$dbname = "systeminfo";

//connection to the database
$dbhandle = mysqli_connect($hostname, $username, $password, $dbname) 
  or die("Unable to connect to MySQL");
echo "Connected to MySQL
"; ?>




Datenbankeinträge in php-Array einlesen und auf Webseite anzeigen:



<table class="table">
	<tr>
		<th>Datum</th>
		<th>CPU-Temperature</th>
		<th>AvgLoad 1 min</th>
		<th>AvgLoad 5 min</th>
		<th>AvgLoad 15 min</th>
	</tr>
	
	<?php
	$result = mysqli_query($dbhandle, "select * from systemvalues order by pkdate desc limit 200;");
	while($datensatz =  mysqli_fetch_array($result))
	{       
		echo "<tr>";
			echo "<td>".$datensatz[0]."</td>";
			echo "<td>".$datensatz[1]."</td>";
			echo "<td>".$datensatz[2]."</td>";
			echo "<td>".$datensatz[3]."</td>";
			echo "<td>".$datensatz[4]."</td>";
		echo "</tr>";
	}
	?>
</table>

Übung 1 Welche Aussage ist wahr?

Wähle die korrekten Aussagen zur gegebenen Schaltung aus.

Setze eine Mindest­passwortlänge von 10.
Wähle eine Antwort.

  1. Router#security passwords min-length 12
  2. Router#security passwords min-length 10
  3. Router#security password-length 10
  4. Router#passwords min-length 10


Ein Admin wechselt zum Privileged EXEC Mode.
Wähle zwei Antworten.

  1. Router#configure terminal
  2. Router(config)-if#exit
  3. Router>enable
  4. Router(config-if)#end

Ein Admin gibt den Befehl Router(config-if)#no shutdown ein. Bestimme den Zweck.
Wähle eine Antwort.

  1. Das Interface wird nicht herunter­gefahren.
  2. Das Interface wird herunter­gefahren.
  3. Das Interface wird nicht hoch­gefahren.
  4. Das Interface wird hoch­gefahren.


Ein Admin gibt den Befehl Router(config)#interface G0/1 ein. Bestimme Zweck.
Wähle eine Antwort.

  1. Das Interface G0/1 wird aktiviert.
  2. Das Interface G0/1 wird deaktiviert.
  3. Das Interface G0/1 erhält eine IP-Adresse.
  4. Das Interface G0/1 soll konfiguriert werden.

Nenne zwei Befehle für die Interfacekonfiguration.
Wähle zwei Antworten.

  1. R1(config-if)#login
  2. R1(config-if)#ip address 10.1.1.1 255.0.0.0
  3. R1(config-if)#reload
  4. R1(config-if)#interface G0/0


Nenne die Befehls­anzahl für die Interface­konfiguration.
Wähle eine Antwort.

  1. eins
  2. zwei
  3. sechs
  4. vier

Begründe, wieso ein Router kein virtuelles Interface benötigt.
Wähle eine Antwort.

  1. Der Router hat reale Interfcaces für die Fernwartung.
  2. Der Router benötigt ein virtuelles Interface.
  3. Ein Router benötigt keine Fernwartung.
  4. Ein Router besitzt ein Antivirusprogramm.


Die Routerkonfiguration soll gelöscht werden.
Wähle eine Antwort.

  1. R1(config)#erase startup-config
  2. R1#delete startup-config
  3. R1#erase startup-config
  4. R1(config)#delete startup-config