Monitoring-Skript - symbol ändern bei Ausfall

nice2kn0w

Mitglied
Hallo zusammen,

ich habe ein kleines Problem, was für euch wohl eher ein Kinderspiel sein wird. Also ich habe den PHP-Portscanner von Dennis Wronka in meinem Skript verwendet um ein Monitoring Skript zu erstellen. Solange ein Dienst verfügbar ist, wird ein bestimmtes Icon angezeigt, ist der Dienst nicht verfügbar soll ein anderes Icon angezeigt werden.
Und genau das ist mein Problem. Ich bin zu blöd um die Icons im Fehlerfall auszutauschen :(

hier mein Skript:

Code:
<?php
$hosts = array("www.elitestudio.de", "www.elan-handelsagentur.de");
$ports = array(80, 443, 25, 21 , 3306, 10000);
$datum = date("H:i:s");
foreach ($hosts as $i)
{
    
    echo '<table border=0 width=700 style="border:1px solid #000099">' ;
    echo "<tr><th align='left' colspan='8' bgcolor='#000099' class='header'>" . $i . "</th></tr>";
    echo "<tr>";
    
    
    foreach($ports as $port) 
    {
        $socket=@fsockopen($i, $port);
        if
        ($socket != false)
        {
            echo "<td width=60><b>" . getservbyport($port, "tcp") . "</b>" . " <img src='flag_green.gif' /></td>" ;
        }
        else 
        {
        echo "<td width=60><b>" . getservbyport($port, "tcp") . "</b>" . " <img src='flag_red.gif' /></td>";
        }
    }
    echo "</tr>";    
    echo "<table>";
    echo "<br>";
}
?>

und hier wie es leider jetzt aussieht:

http://www.ra-buchmann.de/monitor.php

ich danke Euch schonmal
 
Verstehe das Problem leider nicht.
Der letzte Boppel, Webmin, ist immer mit einer roten Flagge markiert. Sprich der Dienst ist nicht verfügbar und wird mir rot dargestellt.

Würde sagen, das der im Fehlerfall das richtig erkennt (wenn der letzte Port 10000 auch wirklich "off" ist)
 
Ich hab auch schon lange so ein script gesucht :)

Hab jetzt nur ein klitzekleines Problem. Bei mir geht das Ding iwie nicht richtig. Sobald ein Server nicht online ist, steht das Script bis zum Timeout, und die anderen Server werden nicht mehr überprüft.

Beispiel

An was kann das liegen? Kann ich auch sagen: Warte 2 Sekunden lang, wenn dann keine Antwort da ist, rote Flagge)

Hier das, was anders als bei nice2know ist:
PHP:
$hosts = array("bratkartoffel.game-host.org", "anakha.game-host.org", "hellbox.game-host.org");
$ports = array(80, 21, 25, 110, 143 );

Sonst ist alles gleich wie bei nice2know.

Ach ja, sorry, beantwortet erst mal nice2knows Frage. Wollt meine nur mal hier stehen haben, nicht dass ich das noch vergesse ;)
 
Die Funktion fsockopen bietet als letzten Parameter einen timeout Wert

resource fsockopen ( string $hostname [, int $port [, int &$errno [, string &$errstr [, float $timeout]]]] )

Bsp

PHP:
 $fp = fsockopen("www.example.com", 80, $errno, $errstr, 2);
für 2 sekunden timeout
 
Du hast recht Mairhofer - hab irgendwie nicht wahr haben wollen, dass das wirklich die Lösung ist :-(

Nun hab ich mal noch eine andere Frage, ich möchte mir zu jedem Scan gerne die Uhrzeit neben den Ergebnissen anzeigen lassen. Muss ich das irgendwo mit in die Schleife einbauen?

Also dass das so aussieht:

Server
https http ftp ssh usw Scan vom 01.01.01 - 00:00:00h
 
einfach nur ein
PHP:
echo date("d.m.y - G:i:s")."h";
in dein Script einbinden... dann bekommst du bspw. 25.08.07 - 15:40:30h

LOK
 
Zurück