Dieser Artikel „Ermitteln und Anzeigen des Server-Status“ beschreibt wie ich die Anzeige der Serverstatus anzeige und diese mittels phpservermonitor ermitteln lasse.
Wie bei den anderen Bildschirmen auch gibt es ein Skript zum Anzeigen und ein Skript um die aktuellen Statusdaten zu ermitteln und daraus ein Bild für die Anzeige zu generieren.
Der folgende Dreizeiler zeigt das Bild an.
#!/bin/bash
# display current weather image
sudo fbi -d /dev/fb0 -T 1 -a --noverbose //cdn1.tuxlog.de/tmp/curr_serverstatus.png
Code-Sprache: PHP (php)
Zur Überwachung meiner verschiedenen Rechner bzw. Server verwende ich die Software phpservermonitor. Phpservermonitor legt die Daten in einer MySQL Datenbank ab und dort kann man mittels eines einfachen SQL Befehls auch den Status und diverse andere Informationen ermitteln. Mit dem SQL Befehl
select label, status, last_online,rtime,last_offline from psm_servers where active=’yes‘ order by label
erhält man den Status, die Zeiten für die letzte Online- und Offline-Zeit und die letzte Antwortzeit für alle aktiven Server.
Das nachfolgende Skript liest die Daten
#!/usr/bin/python
# -*-coding: utf-8 -*-
'''
Python Skript to get the current server status from phpservermonitor
'''
import sys,os
import mysql.connector
from PIL import Image, ImageDraw, ImageFont
# set screenwidth
if (len(sys.argv) > 1):
screenwidth=int(sys.argv[1])
else:
screenwidth=640
if (screenwidth != 640):
screenheight=624
else:
screenheight=480
#
# draw image with serverstatus
#
ftcolor = (230, 230,230)
redcolor = (170, 0, 0)
greencolor = (80, 170, 0)
yellowcolor= (255, 255, 0)
img = Image.new('RGB', (screenwidth, screenheight), color = (0,0,0))
fnt0 = ImageFont.truetype('/usr/share/fonts/truetype/noto/NotoMono-Regular.ttf', 72)
fnt1 = ImageFont.truetype('/usr/share/fonts/truetype/noto/NotoMono-Regular.ttf', 20)
fnt2 = ImageFont.truetype('/usr/share/fonts/truetype/noto/NotoMono-Regular.ttf', 11)
fnt3 = ImageFont.truetype('/usr/share/fonts/truetype/noto/NotoMono-Regular.ttf', 8)
d = ImageDraw.Draw(img)
#
# überschrift
#
d.text((10,10), "Der aktuelle Serverstatus", font=fnt1, fill=ftcolor)
d.text((10,20), "_________________________", font=fnt1, fill=ftcolor)
d.text((20 , 45), "Systemname", font=fnt2, fill=ftcolor)
d.text((270, 45), "Online", font=fnt2, fill=ftcolor)
d.text((390, 45), "Offline", font=fnt2, fill=ftcolor)
d.text((510, 45), "Antwortzeit", font=fnt2, fill=ftcolor)
d.text((595, 45), "Status", font=fnt2, fill=ftcolor)
d.line([(20,58),(635,58)], fill=ftcolor, width=2)
x=20
y=65
#
# get the current serverstatus from the mysql db on rpi0
#
cnx = mysql.connector.connect(user='youruser', password='yourpassword',host='yourserver', database='phpservermonitor')
cursor = cnx.cursor()
query = ("select label, status, last_online,rtime,last_offline from psm_servers where active='yes' order by label")
cursor.execute(query)
for (label, status, last_online,rtime,last_offline) in cursor:
d.text((x,y), label, font=fnt2, fill=ftcolor)
if last_online==None:
d.text((x+250,y), "Niemals", font=fnt2, fill=ftcolor)
else:
d.text((x+250,y), last_online.strftime("%d.%m.%y %H:%M"), font=fnt2, fill=ftcolor)
if last_offline==None:
d.text((x+370,y), "Niemals", font=fnt2, fill=ftcolor)
else:
d.text((x+370,y), last_offline.strftime("%d.%m.%y %H:%M"), font=fnt2, fill=ftcolor)
d.text((x+490,y), str(rtime), font=fnt2, fill=ftcolor)
if status=="on":
d.ellipse((610, y, 620, y+10), fill = 'green', outline ='green')
elif status=="off":
d.ellipse((610, y, 620, y+10), fill = 'red', outline ='red')
else:
d.ellipse((610, y, 620, y+10), fill = 'yellow', outline ='yellow')
y+=18
cursor.close()
cnx.close()
img.save('//cdn1.tuxlog.de/tmp/curr_serverstatus.png')
Code-Sprache: PHP (php)
Die Angaben für die Datenbankverbindung müssen entsprechend angepasst werden.
Die Artikelserie besteht aus acht Teilen. Dem Überblick „Digitaler IKEA-Bilderrahmen mit dem Raspberry Pi“ und den sieben Artikeln zum Bau des digitalen Bilderrahmens mit dem Raspberry Pi.
- Einbau der Teile in den IKEA-Rahmen
- Grundlegende Einstellungen für den Raspberry Pi
- Steuerung der Anzeige
- Automatische Dia-Show
- Erstellen der Kalenderanzeige
- Generieren der Wetteranzeige
- Ermitteln und Anzeigen des Server-Status
Pingback: Digitaler IKEA-Bilderrahmen mit dem Raspberry Pi - Automatische Dia-Show
Pingback: Digitaler IKEA-Bilderrahmen mit dem Raspberry Pi - Steuerung der Anzeige
Pingback: Einbau der Teile in den IKEA-Rahmen - Digitaler IKEA-Bilderrahmen mit dem Raspberry Pi
Pingback: Digitaler IKEA-Bilderrahmen mit dem Raspberry Pi und LS-7 Display