Voila un script vite fait en PHP, il faut le nommer check_address.php (car il s'auto-lance pour chaque mesure) :
<?php// check_address.phpfunctionlatence($host,$port=7,$timeout=10){$ts=microtime(true);$f=@fsockopen($host,$port,$errno,$errstr,$timeout);$result=microtime(true)-$ts;if(!$f){$result=$timeout;}else{fclose($f);}returnround($result*1000,0);}if(!isset($argv[1])||!isset($argv[2])){// *******************************************************// daemon principal -> lance les pings toutes les secondes// *******************************************************$list_address=@file_get_contents("./list_address");$t_ip=explode("\n",$list_address);// nettoyagefor($i=0;$i<count($t_ip);$i++){$t_ip[$i]=trim($t_ip[$i]);if($t_ip[$i]=="")unset($t_ip[$i]);}$time=time();while(true){// boucle infinie, il faudra killer le process pour terminer le programmewhile($time==time())usleep(10);$time=time();// lancement des mesuresforeach($t_ipas$ip){echodate("Y-m-d H:i:s",$time)." : Mesure de $ip\n";system("php check_address.php ".escapeshellarg($ip)." $time > /dev/null 2> /dev/null &");}}exit();}else{// **********************************************************************// programme appelé par le daemon principal -> mesure latence de cette IP// **********************************************************************$ip=trim($argv[1]);$time=(int)$argv[2];// mesure de la latence de cette IP$latence=latence($ip);// enregistrement de la mesure dans ./jour/ip$jour=date("Y-m-d",$time);if(!is_dir("./$jour"))mkdir("./$jour");if($f=@fopen("./$jour/$ip","a")){fputs($f,date("H:i:s",$time)." ".$latence."ms\n");fclose($f);}}?>
La latence est mesurée en faisant un fsockopen sur le port 7. On peut aussi facilement faire du vrai ICMP avec socket_connect et consorts si besoin (à voir ta définition de "latence").
Le timeout est à 1s par defaut, pour éviter d'engorger la machine avec des process forkés qui se termineraient plus lentement qu'ils ne sont lancés, mais tu peux l'augmenter si tu surveilles un peu tout ça en cours d'execution.
Si tu surveilles beaucoup beaucoup d'IP, faut voir aussi si la machine suit le rythme.
[^] # Re: Toutes les secondes ?
Posté par xulops (site web personnel) . En réponse au message Surveillance de la latence d'une liste d'hôte. Évalué à 5.
Voila un script vite fait en PHP, il faut le nommer check_address.php (car il s'auto-lance pour chaque mesure) :
La latence est mesurée en faisant un fsockopen sur le port 7. On peut aussi facilement faire du vrai ICMP avec socket_connect et consorts si besoin (à voir ta définition de "latence").
Le timeout est à 1s par defaut, pour éviter d'engorger la machine avec des process forkés qui se termineraient plus lentement qu'ils ne sont lancés, mais tu peux l'augmenter si tu surveilles un peu tout ça en cours d'execution.
Si tu surveilles beaucoup beaucoup d'IP, faut voir aussi si la machine suit le rythme.