Supervision de ports

Soyez le premier à donner votre avis sur cette source.

Snippet vu 6 686 fois - Téléchargée 19 fois

Contenu du snippet

Ce script permets de superviser les services lancés sur un serveur avec la fonction @fsockopen. Les informations (adresses ip et ports) sont stockés dans une base de donnée.
En cas de ports libre tout va bien sinon création d'un fichier log avec heure, date, adresse ip et ports du serveur en question.
Script commenté (c'est mon premier alors j'attends vos remarques). C'est une adaptation du script http://www.phpcs.com/codes/STATUS-SERVEUR-PHP_39503.aspx

Source / Exemple :


<?php
     
     mysql_connect("localhost", "root", ""); // Connexion à MySQL
     mysql_select_db("supervision"); // Sélection de la base 

     $reponse = mysql_query("SELECT * FROM serveur"); // Requête SQL de la table serveur
     
     while ($donnees = mysql_fetch_array($reponse) )
     { // Début boucle while

     $ip = $donnees['ip_serveur']; // adresse ip du serveur
     $ports = $donnees['ports_serveur']; // ports du serveur

     
     $connect = TRUE; // Autoriser ou non la connexion
        
    	
     // Mise en place du texte du nom de serveur
     echo "Le serveur $ip port $ports";
     // Verification du statut
    
     if (! $sock = @fsockopen($ip, $ports, $num, $error, 5))
     {
     // Si il est hors ligne
     echo ' est : <font color="#CC0000">DECONNECTE</font> !';
     
     // Si problème création du fichier log
     echo "<br />";
     echo "Création du fichier log";
     $fp=fopen("/var/www/test/log.txt","a"); // Ouverture du fichier avec le mode écriture
     fputs($fp, "\n"); // on va a la ligne
     $date = date("d-m-Y"); // On recupere la date de l'incident
     $heure = date("H:i"); // On recupere l'heure  de l'incident
     fputs($fp, "$date $heure $ip $ports"); // On écrit la date, l'heure, l'ip et le port concerné
     fclose($fp); // Fermeture du fichier
     }	 
	  
     else{
     // Si il est en ligne
     echo ' est : <font color="#00CC00">CONNECTE</font> !';
    
     fclose($sock);
    
     }	
     echo "<br />";
	
     } // Fin boucle while
     mysql_close(); // Déconnexion de MySQL
     ?>

A voir également

Ajouter un commentaire Commentaires
Messages postés
8
Date d'inscription
mardi 8 avril 2008
Statut
Membre
Dernière intervention
25 avril 2008

j'ai exécuté votre code je trouve ces erreurs:

Notice: Undefined index: ip_serveur in C:\Program Files\EasyPHP 2.0b1\www\supervision.php on line 10

Notice: Undefined index: ports_serveur in C:\Program Files\EasyPHP 2.0b1\www\supervision.php on line 11
Le serveur port est : DECONNECTE !
Création du fichier log
Warning: fopen(/var/www/test/log.txt) [function.fopen]: failed to open stream: No such file or directory in C:\Program Files\EasyPHP 2.0b1\www\supervision.php on line 29

Warning: fputs(): supplied argument is not a valid stream resource in C:\Program Files\EasyPHP 2.0b1\www\supervision.php on line 30

Warning: fputs(): supplied argument is not a valid stream resource in C:\Program Files\EasyPHP 2.0b1\www\supervision.php on line 33

Warning: fclose(): supplied argument is not a valid stream resource in C:\Program Files\EasyPHP 2.0b1\www\supervision.php on line 34
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
39
c'est pas de la supervision, c'est juste un exemple de log... t'as aucune verification d'erreur dans ton script...
Messages postés
239
Date d'inscription
samedi 21 février 2004
Statut
Membre
Dernière intervention
3 juin 2010
1
Salut,

bien pratique ce petit script. Pour l'archivage des données dans le fichier de log, il est possible de faire plus simple (écriture sur la prochaine ligne) :

> $hFile = fopen('/var/www/test/log.txt', 'a+');
> $time = date("d-m-Y H:i"); // récupération des infos de temps
> fputs($hFile, "$time $ip $ports\r\n"); // "\r\n" permet d'insérer un retour à ligne
> fclose($hFile);

Une dernière petite chose, pour la vérification des communications :

# if (! $sock = @fsockopen($ip, $ports, $num, $error, 5))
> if (FALSE ($sock @fsockopen($ip, $ports, $num, $error, 5) )
Rq : vérifier le type de retour étant donné que fsockopen retourne soit un pointeur soit false (type différent).

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.