begin process at 2008 05 16 05:33:36
1 173 215 membres
58 nouveaux aujourd'hui
13 970 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

SUPERVISION DE PORTS


Information sur la source

Description

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

  • <?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
  • ?>
     <?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
     ?> 

  • signaler à un administrateur
    Commentaire de DiGhan le 07/07/2007 17:46:18

    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).






  • signaler à un administrateur
    Commentaire de coucou747 le 09/07/2007 07:35:32

    c'est pas de la supervision, c'est juste un exemple de log... t'as aucune verification d'erreur dans ton script...

  • signaler à un administrateur
    Commentaire de marmarak le 11/04/2008 10:21:23

    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

Ajouter un commentaire

Discussions en rapport avec ce code source

Appels d'offres

Pub



CalendriCode

Mai 2008
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Téléchargements

Boutique

Boutique de goodies CodeS-SourceS