You are not logged in.
Pages: 1
Topic closed
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é
Offline
merci pour ta contribution.
Je vais regarder cela
Xavier Caillaud
Blog GLPI Infotel
Offline
j'ai du mal avec ton $list[4][20] <> 0
Xavier Caillaud
Blog GLPI Infotel
Offline
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
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
Implémenté dans la version de dev :
Xavier Caillaud
Blog GLPI Infotel
Offline
Pages: 1
Topic closed