Sysinfo auf Wallpaper automatisch erstellen
Betreut man mehrere Systeme und greift dabei auf FreeNX oder VNC zurück, kann es mit unter schwierig sein den Überblick zu behalten, auf welchem System man sich gerade befindet. Ein Überblick über die Maschine bzw. den Client-Rechner ist hierbei sehr hilfreich.
Für den Endanwender gibt es Paket Screenlets mit dem man viele ansprechende Zusatzprogramme einbinden kann. So können mit InfoPanel sehr umfangreiche Systeminformationen am Bildschirmhintergrund dargestellt werden. Das Paket zielt vermutlich, wie auch alle anderen erhältlichen Sreenlets auf den, vermutlich auf die große klicky-bunty-Welt ab. Die Programmvoraussetzungen und die im Betrieb mit einhergehenden (unnützen) Belastung/Belegung der Systemressourcen werfen natürlich Fragen auf, ob dies nicht mit einfacheren Mitteln zu bewerkstelligen ist.
Informationen
Werte
Für die ressourcenschonende Realsierung der Anforderungen im SOHO wurde daher folgender Lösungsweg eingeschlagen. Auf dem Bildschirmhintergrund werden die wichtigsten Systeminformationen angezeigt:
- Hostname
- CPU
- Speicher
- OS-Version
- Kernel-Version
- IP-Adresse(n)
- Bootzeitpunkt
Beispiel
Software
Paket zur Bildbearbeitung
Die Texte mit Hilfe des Programmes convert aus dem RPM-Paket ImageMagic in einen vorhandenen Bildschirmhintergrund eingefügt. Sofern noch nicht bei der Erstinstallation geschehen, installieren wir uns das Programpaket zur Bildmanipulation.
# yum install ImageMagick -y
Script zur Bilderstellung
Für die „Einblendung“ der gewünschten Systeminformationen bedienen wir uns eines einfachen bash-scrips. Dieses Script legen wir unter /usr/local/bin/ ab, bzw laden es uns direkt aus dem Dokuwiki herunter.
# vim /usr/local/bin/sysinfo4wp
- /usr/local/bin/sysinfo4wp
#!/bin/bash ############################################################################## # Script-Name : sysinfo4wp # # Description : Script zur Erstellung eines Bildschirmhintergrundes mit # # den wichtigsten Systemparametern # # # # Last update : 2012-01-05 # # Version : 0.02 # ############################################################################## ############################################################################## # H I S T O R Y # ############################################################################## # Version : 0.01 # # Description : initial release # # -------------------------------------------------------------------------- # # Version : 0.02 # # Description : Bootzeitpunktberechnung berücksichtigt, Dank an fischi # ############################################################################## # Definition der Variablen FILE="/usr/share/backgrounds/default.jpg" # Bildschirmhintergrund in dem die Ausgabe eingebettet werden soll WALLPAPER="/usr/share/backgrounds/new_blue.jpg" # Name unseres neu erstellten Bildschirmhintergrundes TMPFILE="/tmp/sysinfo_4_WP" PRG=/usr/bin/convert # Variablen für die ermittelten Parameter HOST=$(hostname) RELEASE=`cat /etc/redhat-release` KERNEL=`uname -r` KERNELVERSION="Linux Version "$KERNEL IPT=$(/sbin/ifconfig eth0 | head -n 2 | tail -n 1 | cut -d: -f2 | cut -d" " -f 1) IPADRESSET="IP Adresse (eth0): "$IPT # ggf. weitere Netzwerkschnittstellen definieren #IPU=$(/sbin/ifconfig ppp0 | head -n 2 | tail -n 1 | cut -d: -f2 | cut -d" " -f 1) #IPADRESSEU="IP Adresse (ppp0): "$IPU UPTIME=`uptime | grep '' /proc/uptime | awk '{ print $1 }'` UPTIME=`echo "$UPTIME" | sed 's/\(.*\)...$/\1/'` let BOOTDATE=`date +%s`-$UPTIME BOOTDATE="Bootzeitpunkt: "`date -d @$BOOTDATE "+%d.%m.%y - %H:%M Uhr"` CPU_COUNT=`cat /proc/cpuinfo | grep -cA 0 processor` CPU_MODEL=`cat /proc/cpuinfo | grep -m 1 model.name | sed 's/^model.name*.:*.//'` CPU_SPEED=`cat /proc/cpuinfo | grep -m 1 cpu.MHz | sed 's/^cpu.MHz*.:*.//' | sed 's/^:*.//'` CPU="$CPU_COUNT x $CPU_MODEL" MEM=`grep MemTotal /proc/meminfo` # Hintergrundbild erstellen $PRG -gravity southwest -fill white -pointsize 35 -draw 'text 50,320 Systemübersicht' $FILE $WALLPAPER $PRG -gravity southwest -fill white -pointsize 30 -draw "text 50,270 '$HOST'" $WALLPAPER $WALLPAPER $PRG -gravity southwest -fill white -pointsize 20 -draw "text 50,230 '$CPU'" $WALLPAPER $WALLPAPER $PRG -gravity southwest -fill white -pointsize 20 -draw "text 50,200 '$MEM'" $WALLPAPER $WALLPAPER $PRG -gravity southwest -fill white -pointsize 20 -draw "text 50,160 '$RELEASE'" $WALLPAPER $WALLPAPER $PRG -gravity southwest -fill white -pointsize 20 -draw "text 50,135 '$KERNELVERSION'" $WALLPAPER $WALLPAPER # ggf. weiters Netzwerkinterface anzeigen lassen #$PRG -gravity southwest -font /usr/share/fonts/bitstream-vera/VeraBd.ttf -fill white -pointsize 20 -draw "text 50,110 '$IPADRESSEU'" $WALLPAPER $WALLPAPER $PRG -gravity southwest -fill white -pointsize 20 -draw "text 50,85 '$IPADRESSET'" $WALLPAPER $WALLPAPER $PRG -gravity southwest -fill white -pointsize 20 -draw "text 50,50 '$BOOTDATE'" $WALLPAPER $WALLPAPER
Anschließend statten wir das Script mit den x-Rechten aus.
# chmod +x /usr/local/bin/sysinfo4wp
Wenn wir nun das script das erste mal von Hand starten können wir das Ergebnis ansehen und überprüfen, ob die Ausgabe unseren Wünschen entspricht.
# sysinfo4wp
# eog /usr/share/backgrounds/new_blue.jpg
Sofern alles passt, aktivieren wir unseren neuen Desktop-Hintergrund, mit einem rechten Mausklick auf dem Desktop-Hintergrund.
automatische Erstellung
Damit nun beim Booten automatisch der gewünschte Bildschirmhintergrund erstellt wird, ist es nötig unser bash-script /usr/local/bin/sysinfo4wp beim Booten der Maschine auszuführen. Hierzu ergänzen wir einfach die Datei rc.local im Verzeichnis /etc/rc.d/
# vim /etc/rc.d/rc.local
# Django: automatisch generiertes Wallpaper mit Systeminformationen versorgen # eingefügt am 2011-07-25 /usr/local/bin/sysinfo4wp


Diskussion
Gute Idee die Infos so zu sammeln und anzuzeigen. Für die IPs der Netzwerkkarten habe ich da noch eine andere Idee (so werden alle Netzwerkkarten ethX berücksichtigt):
$Y ist die vertikale Position der Zeile im Bild. Einfach in allen anderen Punkten die Ziffer durch die Variabel ersetzen und z.B. immer mit let Y=$Y+25 eine neue Position der Zeile festlegen.
Fischi
Servus Fischi,
Deinen Ansatz finde ich eine gute Ergänzung zu dem Beispielsscript von mir. Bei einem System, welches ich hier unter meine Fittiche habe, finden sich 24 Netzwerkinterfaces, da wirds dann schon relativ eng mit der Anzeige auf dem Bildschirmhintergrund. Ähnlich verhält es sich mit unterschiedlichen Netzwerk-Schnittstellen, wie z.B.:
Daher bevorzuge ich persönlich hier auf den Maschinen die Auswahl von genau den Interfaces, die ich sehen möchte.
Servus Django
Hallo,
so viele Netzwerkschnittstellen sind es bei mir nicht
Die Scriptzeilen stammen auch aus einer anderen Geschichte. Da sammle ich Daten über die Netzwerkauslastung und stelle diese in je einem RRD Tool dar.
Aber noch etwas anderes. Die Bootzeit wird hier einfach durch die aktuelle Zeit bei dem ausführen des Scriptes festgestellt. Solange das Script automatisch bei dem Booten ausgeführt wird ist das auch ok. Soll das aber (mehrere User oder verschiedene grafische Oberflächen) erst zu einen späteren Zeitpunkt passieren gibt es ein Problem. Wenn man von der aktuellen Zeit die uptime Zeit abzieht, kommt man immer wieder auf den Bootzeitpunkt. Mein Vorschlag daher:
# Bootzeit let Y=$Y+25 UPTIME=`uptime | grep '' /proc/uptime | awk '{ print $1 }'` UPTIME=`echo "$UPTIME" | sed 's/\(.*\)...$/\1/'` let BOOTDATE=`date +%s`-$UPTIME BOOTDATE="Bootzeitpunkt: "`date -d @$BOOTDATE "+%d.%m.%y-%H:%M"` $PRG -gravity southwest -fill white -pointsize 20 -draw "text 50,$Y '$BOOTDATE'" $FILE $WALLPAPERGrüße Fischi
HI,
na der eine Host ist auch ein Extremfall. Dein Codeschnipsel habe ich in das Script eingebaut und die Versionsnummer um eins erhöht.
cu Django