.: HosiriS :.

Informatica e non solo

Archive for dicembre 2009

Classi: Monitor server

Posted by hosiris su dicembre 2, 2009

Presento una serie di articoli in cui ho deciso di raccogliere le classi che creerò col tempo… inizio subito con quelle già pronte.
Oggi descrivo la classe Monitor: cioè come monitorare i servizi attivi sul server!


/*
* CLASSE PER MONITORARE STATO SERVIZI SERVER
*/
class Monitor
{
    public $dominio;
    public $porta;

    public function Monitor($dom)
    {
        $this->dominio = $dom;
    }

    public function monitora($port)
    {
        $fp = @fsockopen($this->dominio, $port, $errno, $errstr, 10);
        if(!$fp) return ‘DOWN’;
        else return ‘UP’;
    }
}

Codice facilissimo da intuire e soprattuto trovabile ovunque in rete, non fa altro che tentare di aprire un canale di connessione con un servizio, se la connessione avviene con successo viene ritornato il valore ‘UP’. Nelle mie applicazioni preferisco questa versione dell’IF:


if(!$fp) return '<img src="rosso.jpg" alt="" />';
else return '<img src="verde.gif" alt="" />';

in cui il semplice testo è stato sostituito con delle immagini.
Ho preferito non implementare la variabile $port come proprietà della classe in modo da poter decidere all’esterno della classe quali porte monitorare, tramite una soluzione del genere:


$porte = array(
        'FTP'=>'21',
        'SSH'=>'22',
        'HTTP'=>'80',
        'SMB'=>'445',
        'MySQL'=>'3306');
$mon = new Monitor('localhost');
foreach($porte as $nome=>$porta)
{
    echo 'Stato servizio '.$nome.': '.$mon->monitora($porta);
}

Ottenendo il seguente risultato:
Schermata

Da notare la possibilità di inserire un dominio diverso da localhost, in questo modo avremo i servizi attivi su quell’host… un semplicissimo port mapping.

Saluti alla prossima classe

Posted in PHP, Programmazione | 2 Comments »