Knowledgebase
Webseite überprüfen - Nadel im Heuhaufen finden - Prüfen ob Webseite speziellen Inhalt vorweist, falls nicht ALARM E-Mail senden
Posted by Mathias Fuerlinger on 04 April 2017 06:21 PM

Das QNAP-NAS als Watchdog oder Überwachungsserver nutzen:

Mit diesem kleinem PHP-script kann man von einem QNAP-Server aus Prüfen ob eine Remote WebSeite antwortet, oder deren Inhalt verändert wurde.

Das Skript kann zum Beispiel via Cronjob regelmässig prüfen ob der Remote WebServer funktioniert.

Im Fehlerfall schickt das Script eine Warn-Email.

Die folgenden Variabeln müssen angepasst werden:
Anpassen von URL und Needle:

$urltogrep="http://anywebserver.internet.de";
$needle="<HTML>Was ich auf der Webpage suche</HTML>"

Anpassen der E-Mail Einstellungen:
$emailsender="info@qnap.de";
$emailreceiver="test@test.de";

Ggf. sind Anpassungen an der php.ini notwendig - im Fehlerfall die entsprechenden Logs prüfen.


Das kleine php Skript dann zum Beispiel über den crontab aufrufen.

Der manuelle Aufruf sieht in etwa so aus. (ggf. Skriptname und Pfad anpassen):
/mnt/ext/opt/apache/bin/php -c /php.ini /share/homes/admin/scripts/monitorWWWpage.php > /dev/null

 

Das SKRIPT:

<?php

$urltogrep="http://anywebserver.internet.de";
$emailsender="info@qnap.de";
$emailreceiver="test@test.de";
$cycle=1;
// just in case php.ini is not set correctly for date & time
ini_set('date.timezone', 'Europe/Berlin');

/* ################################################################################## */
/* check availability of page (the QUICK-version) */
list($status) = get_headers($urltogrep);
if (strpos($status, '404') !== FALSE) { return; }


while ($cycle <= 3)
{
/* ################################################################################## */
/* grep HTML source from page with plain and easy file_get_contents command */
$html = file_get_contents($urltogrep);
$scriptdate=date("d.m.Y H:i:s");

/* ################################################################################## */
/* Clean-up the source */
$cleanhtml = str_replace("&amp;nbsp;", "", $html);

/* ################################################################################## */
/* Check if "needle" is in sight */
$needle = strpos($cleanhtml, "<HTML>sourcecode</HTML>");

/* Return the needle from pregmatch */
if ($needle)
{
$cycle = 99;
unset($error);
echo "\nNeedle found \n";
}
else
{
echo "\n.... retrying ($cycle) Zeit: $scriptdate ....\n";
$errorlog .= "No connect (Durchlauf: $cycle): $scriptdate\n";
sleep(600); // in Sekunden
$error="yes";
$cycle ++;
}
} // end while cycle<3

/* ################################################################################### */
/* Send Errormsg */
if ($error)
{
// build and send email now
$subject="Problem mit dem Server";
$errormsg = "Automatisch generierte WARN-E-Mail.\n\n";
$errormsg .= "Der Server $urltogrep konnte nicht erreicht werden.\n";
$errormsg .= "Dieses Skript hat 3x versucht die URL des Servers zu erreichen.\n\n";
$errormsg .= $errorlog."\n\n";
$errormsg .= "Bitte den Zustand des Servers pruefen.\n\n";
mail($emailreceiver, $subject, $errormsg, "From: QNAP-NAS <$emailsender>");
echo $errormsg;
}

?>

 

 

Die hier vorgestellten Zeilen verlangen einen sicheren Umgang mit der LINUX Shell. Bitte nur Anwenden wenn Sie auf der Linux Shell sicher sind und wenn Sie sich in/mit PHP auskennen. Der Autor dieser Anleitung oder die Firma QNAP übernehmen keinerlei Haftung für mögliche Schäden oder Datenverlust durch Kommandoeingaben auf der Linux Shell Ihres NAS.

(19 vote(s))
Helpful
Not helpful

Comments (0)