Scripting – Überprüfung von Webseitencontent via md5sum

Ich durfte mich gerade wieder mit einem neuen Monitoringscript beschäftigen. Die Anforderungen sind relativ überschaubar und somit war klar, dass das Script nicht allzuviel Zeit fressen sollte. Natürlich habe ich mich im Script verloren und noch viele kleine Kleinigkeiten eingebaut 🙂 . Den Download zum Script gibt es ganz unten am Ende des Artikels zur Belohnung zum runterscrollen.

Anforderungen

Das Script sollte folgende Anforderungen erfüllen:

  • Abrufen von Webseiteninhalt
  • Vergleichen dieses Inhaltes mit einer bestimmten HASH-Summe
  • Lesbare Ausgabe für das Monitoringsystem (0 oder 1)

Dazu kamen dann noch meine Anforderungen 😎

  • Der Gerät muss gut aussehen
  • Sollte Fehlerabfangen können
  • Fehlende Abhängigkeiten erkennen
  • Sinnvolle Errorausgaben liefern
  • Wumms haben
  • Reguläre lesbare Ausgabe
  • Obligatorische VERBOSE Mode

Naja – das Script ist nun fertig und erfüllt alle Anforderungen 🙄

Parameter

Ich bin einmal so Frech und poste euch einfach mal die Ausgabe der Hilfe

compare_download_hash 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
Dieses Script lädt eine Datei herunter und prüft den md5sum Hashwert dieser Datei. 
Stimmt dieser mit einem gegebenen Wert überein, so gibt das Script eine OK Meldung aus. 
Das Script verwendet die Tools cURL und md5sum.
Usage : compare_download_hash -U <URL> -m <HASH> [-T] <Timeout> [-h] [-v] [-V] [-b] [-W]

     -U Angabe des Downloadlinks
     -m Angabe des md5sum hashes
     -T Timeout
     -h Gibt diese Hilfe aus
     -v Zeigt die Version an
     -V Ausführliche Ausgaben
     -b Optimierte Ausgabe für Überwachungssysteme
        0 - OK
        1 - !OK
        X - Have a look at curl EXITCODES

     -W Wenn es schnell sein muss!

Standardtimeout des Scriptes ist nach 5 Sekunden.
Dieses Script ist Geschwindigkeitsoptimiert!

Version: 1.0
Release: Aufmerksame Apostel analysieren afrikanische Apfelernten.

Beispiele

Regulärer Aufruf des Scriptes

./compare_download_hash -U www.weichert.it -m 50316dde281c1c14f4712dd40db81f67
OK: Der HASH-Wert stimmt überein.

Für eine „maschinenfreundliche“ Ausgabe wird der Parameter -b an den Befehl angehängt.

./compare_download_hash -U www.weichert.it -m 50316dde281c1c14f4712dd40db81f67 -b
0

Für eine ausführliche Ausgabe verwendet man Parameter -V

./compare_download_hash -U www.weichert.it -m 50316dde281c1c14f4712dd40db81f67 -V

Der Inhalt der Seite "www.weichert.it" wurde in der Datei "check.xml" gespeichert.
Es wurde per md5sum folgender Hashwert gebildet:
    50316dde281c1c14f4712dd40db81f67
Dieser stimmt mit Ihrem Hashwert "50316dde281c1c14f4712dd40db81f67" überein.

Sollte cURL einmal mit einem Fehler zurückkehren bricht das Script die Verarbeitung ab:

./compare_download_hash -U www.diesedomaingibtesnicht.it -m 50316dde281c1c14f4712dd40db81f67

ERROR: cURL EXITCODE: 6.

Mit Parameter -V wird hier auch der EXIT Code von cURL mit einer genaueren Fehlermeldung erklärt.

./compare_download_hash -U www.diesedomaingibtesnicht.it -m 50316dde281c1c14f4712dd40db81f67 -V

cURL konnte das Ziel leider nicht erreichen. Es wurde folgende Ursache erkannt:

ERROR: CURLE_COULDNT_RESOLVE_HOST (6)
Couldn't resolve host. The given remote host was not resolved.

Download

Hier könnt ihr das Script herunterladen und es frei verwenden. Viel Spaß damit. Über Kritik, Verbesserungsvorschläge und vielleicht sogar Lob würde ich mich in den Kommentaren sehr freuen.
Vergleichen von Webseitencontent mit erwarteten Werten.

Kommentar hinterlassen

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

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax