You are not logged in.

Announcement

 Téléchargez la dernière version stable de GLPI      -     Et vous, que pouvez vous faire pour le projet GLPI ? :  Contribuer
 Download last stable version of GLPI                      -     What can you do for GLPI ? :  Contribute

#1 2006-12-14 10:11:24

Samche
Member
From: Condom
Registered: 2006-12-14
Posts: 34

Addressing et Ping sur les adresses libres

Notre gestion d'adresse IP consistait en un ping sur une plage définie et si le ping ne répondait pas, on considérait l'adresse libre et on l'affectait.

On sait à peu près où on en est donc on n'a pas eu trop de soucis jusqu'à présent mais l'installation de glpi et de son plugin addressing nous a bien aidé.

Nous avions quand même un problème car certaines machines installées par d'autres services (comme la GTC installée par les services techniques ou les stations de télémédecine installées par le biomédical) ne sont pas référencées dans notre ancienne gestion de parc mais nous prennent quand même des adresses IP.

C'est pour les trouver que j'ai un peu modifier le plug-in addresse IP en ajoutant une case à cocher "faire le ping". En la cochant, le plug-in va faire un ping sur toutes les adresses IP libres qu'il aura trouver.

Ca rallonge considérablement le temps d'éxécution même si j'ai mis un timeout d'1 seconde seulement. Je pense qu'il peut vous aider à retrouver certaines machines ayant disparues de votre gestion de parc.

dans index.php, ligne 67, rajouter

    echo "<input type='checkbox' name='ping'> Faire le ping";
    echo "</td><td align='center' width='120'>";

dans plugin_addressing.display.php, ligne 58

.pingOK
{
    background-color: #FF0000;    
}

ligne 398, remplacer

echo "<tr class='free'><td>$ip</td>";

par

if ($_POST['ping'] == "on")
{
    if (ping($ip)) echo "<tr class='pingOK'><td>$ip</td>";
    else echo "<tr class='free'><td>$ip</td>";
}
else echo "<tr class='free'><td>$ip</td>";

A la fin du fichier, avant le ?>, rajouter

function ping($ip)
{
    exec("ping -c 1 -w 1 $ip", $list);
    if ($list[4][20] <> 0) return true;
    return false;
}

J'espère ne pas m'etre trop trompé sur les numéros de ligne.

Pour le ping, j'utilise un serveur UNIX, vous risquez de devoir modifier la syntaxe si vous utilisez une distribution linux ou un serveur windows. L'idée est de récupérer le chiffre dans "x paquets reçus". Si c'est 0, on considère le ping échoué.

En espérant que vous trouverez une utilité wink

Offline

#2 2006-12-14 10:15:39

tsmr
GLPI-DEV
From: Rennes
Registered: 2005-08-26
Posts: 11,632
Website

Re: Addressing et Ping sur les adresses libres

merci pour ta contribution. smile

Je vais regarder cela wink


Xavier Caillaud
Blog GLPI Infotel

Offline

#3 2006-12-14 11:16:15

tsmr
GLPI-DEV
From: Rennes
Registered: 2005-08-26
Posts: 11,632
Website

Re: Addressing et Ping sur les adresses libres

j'ai du mal avec ton $list[4][20] <> 0


Xavier Caillaud
Blog GLPI Infotel

Offline

#4 2006-12-14 11:30:11

Samche
Member
From: Condom
Registered: 2006-12-14
Posts: 34

Re: Addressing et Ping sur les adresses libres

c'est pas très propre je l'avoue.

le exec te retourne un tableau de caractères qui est le résultat du ping. Chez moi ça donne ça lorsque le ping est bon:

PING xxx.xx.x.x : (xxx.xx.x.x) : 56 octets de données
64 octets de xxx.xx.x.x : icmp_seq=0 ttl=64 temps=3 ms

----xxx.xx.x.x Statistiques PING----
1 paquets transmis, 1 paquets reçus, 0% de paquets perdus
aller-retour min./moy./max. = 3/3/3 ms

et ça lorsque le ping n'est pas bon

PING xxx.xx.x.xxx : (xxx.xx.x.xxx) : 56 octets de données

----xxx.xx.x.xxx Statistiques PING----
1 paquets transmis, 0 paquets reçus, 100% de paquets perdus

L'idée c'est de tester la 5e ligne et le 21e caractère (soit $list[4][20] puisqu'on commence à compter à 0). Si c'est pas 0, c'est que le ping a abouti.

On peut tester le nombre de lignes aussi ou la présence de la chaine "aller-retour". Bref, on peut tester tout ce qui différencie un ping réussi d'un ping raté.

Le problème de cette méthode est qu'elle est spécifique au type de serveur qui envoi le ping et un serveur windows ne retourne pas les memes résultats qu'un serveur unix.

Je suis bien sur preneur de toute autre solution de ping plus propre. Pour l'instant, c'est la seule méthode que j'ai trouvée et qui fonctionne relativement bien.

Offline

#5 2006-12-14 11:43:54

tsmr
GLPI-DEV
From: Rennes
Registered: 2005-08-26
Posts: 11,632
Website

Re: Addressing et Ping sur les adresses libres

Oui Ya ca qui est pas mal :

$nb=count($list);
for($i=0;$i<$nb;$i++)
{
if(strpos($list[$i],"TTL")>0) return true;
else
return false;
}


Xavier Caillaud
Blog GLPI Infotel

Offline

#6 2006-12-14 13:41:59

tsmr
GLPI-DEV
From: Rennes
Registered: 2005-08-26
Posts: 11,632
Website

Re: Addressing et Ping sur les adresses libres

Implémenté dans la version de dev :

https://dev.indepnet.net:8080/plugins/changeset/3064


Xavier Caillaud
Blog GLPI Infotel

Offline

Board footer

Powered by FluxBB