simples XML Monitoring

file-icon-xml

XML ist ja wahnsinnig angesagt für alle möglichen Dinge. Ich selbst kann mich damit nicht so recht anfreunden – zumindest ist manuelles editieren immer ein Krampf. Ich habe meist mit Konfigurationsdateien in XML zu tun. So auch mit meinem Telefonprojekt. Die Snom Telefone nutzen für das Provisioning eine XML Datei, welche über einen Webserver abgerufen wird. Da ich die Konfiguration sehr dynamisch gemacht habe (Webfrontend etc.) wird auch die XML Konfig für die Telefone dynamisch erstellt. Diese Datei sollte sich unbedingt an den XML Standard halten, da ansonsten die Telefone mit dem ganzen nichts anfangen können (dabei habe ich schon die seltsamsten Fehler erlebt).

XML validieren

Um XML zu validieren gibt es ein recht einfaches Tool unter Linux – xmllint. Einfach als Parameter eine XML Datei angeben und gut. xmllint kommt auch mit http Links zurecht – was mir ebenfalls gerade recht kommt :-)

Icinga Plugin

Absolut simpel kann man das ganze nun in ein Icinga/Nagios Plugin verwandeln:

#!/bin/bash

# validation of a remote XML File

# Ronny Becker, 02.2013

RET="`xmllint --noout $1 2>/dev/null; echo $?`"

case $RET in
 "0" )
 echo "XML Validation OK"
 exit 0
 ;;
 "1" )
 echo "XML Validation NOT OK"
 exit 2
 ;;
 * )
 echo "unknown return code"
 exit 3
 ;;
esac

Das ganze als command einbinden, als ersten Parameter bekommt das Plugin die remote Adresse (http://…) und fertig.

2 Responses to simples XML Monitoring

  1. Es macht keinen Sinn, dass du xmllint ausführst, den exit-Code (der eine Variable ist) ausgibst und in einer Variable speicherst. Wieso nicht einfach so?


    xmllint --noout "$1" 2>/dev/null
    case $? in
    ...

    (achja, und $1 gleich noch gequoted, falls Leerzeichen mal irgendwo vorkommen.)

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>