Der Funktionsumfang unserer Datenkonzentratoren und Gateways wächst kontinuierlich. Oft sind auch Kundenanforderungen ein maßgeblicher Treiber. Doch hier ist immer abzuwägen, was im Standard integriert wird, und somit jedem zur Verfügung steht, oder was speziell nur für eine Anwendung realisiert wird.
Denn alle integrierten Funktionen müssen beherrschbar und bedienbar bleiben. Eine überfrachtete Oberfläche ist nicht das, was wir unseren Kunden zumuten wollen. Um dennoch möglichst flexibel zu bleiben, sind bisher einige Funktionen nur durch manuelle Parametrierung auf Systemebene möglich gewesen.
Mit dem kompletten Wechsel der Gerätefamilien auf das Linux-Betriebssystem haben wir nun neue Möglichkeiten verfügbar.
Für Linux stehen sehr viele Werkzeuge, kleine Programme und Bibliotheken als Open Source (quelloffen) zur Verfügung. Damit ebnen sich Wege hin zu einem noch umfangreicheren oder noch kundenspezifischeren Produkt.
Natürlich lässt sich für viele Anwendungen eine Softwarelösung finden; diese wird mit auf unsere Geräte aufgespielt und kann direkt genutzt werden. Jedoch ist dies zu individuell und erfordert für jeden Einsatz eine spezielle Anpassung. Generisch ist dies nicht.
Unser generischer Ansatz ist dem gegenüber die Nutzung von so genannten Scripten, also kleinen Programmschnipseln (Makros), welche mit begrenztem Funktionsumfang Daten einlesen, verarbeiten und ausgeben. Der Vorteil hiervon ist, dass keine Kompilierung notwendig ist, da die Scripte über einen Interpreter ausgeführt werden. Somit kann auch der Nutzer selbst Scripte anpassen oder erstellen.
Bei den Interpretern nutzen wir wiederum kompilierte Standardumgebungen wie BASH oder XSLTPROC. Die Scripte können in diesen Umgebungen laufen und so diverse Funktionen abbilden.
BASH Script
BASH ist ein Kommandozeileninterpreter. Man hat daher im Script die selben Möglichkeiten wie sie die Kommandozeile (Linux-Shell) bietet. Dazu kommen noch Nutzung von Variablen, Kontrollflusselemente (z.B. if-Abfrage) und Arithmetik.
Hiermit lassen sich sehr vielfältige Dinge umsetzen, beispielsweise:
- Absetzen von Pings
- Setzen der Systemzeit
- Senden von Daten an eine Schnittstelle
- Abrufen von Webseiten
- Versenden von Mails
- Neustart des Systems
Diese Liste ist bei weitem nicht vollständig. Eine komplette Befehlsauflistung, welche in unserem Linux-System verfügbar sind, ist sehr lang und enthält auch Allzweckwerkzeuge wie curl oder openVPN.
Ein kleines Beispiel sieht wie folgt aus:
#!/bin/bash
# parameter 1: IP of DUT
failcnt=0
succcnt=0
while true; do
# check device
if ! ping -c 1 -w 1 $1 > /dev/null; then
# not present
failcnt=$((failcnt + 1))
wait=15
else
# present
succcnt=$((succcnt + 1))
fi
echo “$(date) device ping result: $failcnt vs. $succcnt”
sleep $wait
done
Es wird mit einer IP-Adresse als Parameter gestartet und führt dann endlos alle 15 Sekunden einen Ping an diese IP aus. Je nach Erfolg / Misserfolg wird ein Zähler hochgezählt und dann zyklisch ausgegeben.
Für einen ersten Eindruck soll dies hier genügen. In kommenden Blogbeiträgen werden immer mal wieder konkrete Beispiele erläutert werden.
XSLT Script
Nicht ganz so umfangreich und dediziert für die Formatierung von Daten ist mit XSLTPROC ein XSLT-Parser auf unseren Geräten integriert.
XSLT ist eine Scriptsprache zur Transformation von XML-Daten in ein anderes, strukturiertes Format (XML oder auch CSV).
Damit lässt sich im Wesentlichen das Ausgabeformat der Daten unserer Datensammler kundenspezifisch anpassen. Intern verarbeiten wir die Daten als XML und ermöglichen so die Basis für ein Script. Auf dieser Datenbasis setzt das XSLT-Script auf und erzeugt dann das entsprechend notwendige Ausgabeformat.
Mehr Informationen zu den Möglichkeiten von XSLT finden Sie in folgenden zwei Blogeinträgen: Daten von Format – Export der MUC Daten – Teil I und Teil II.
Auch hier werden wir in kommenden Blogbeiträgen immer mal wieder konkrete Beispiele erläutern.
Funktionserweiterung durch Scripting
PDF | 103 kB