Skip to main content
On m'a récemment demandé d'analyser un fichier de trace, qui ne durait que 161 secondes et contenait un peu plus de 2,6 millions d'images. J'ai été stupéfait de découvrir qu'environ 75% de ces trames contenaient soit des requêtes ping, soit des réponses ping. Si je n'avais pas reconnu l'adresse IP source, je serais arrivé à la conclusion que la cible faisait l'objet d'une attaque par déni de service. Au lieu de cela, j'ai appris qu'ils utilisaient l'argument "run_forever" sur la commande ping du STCP pour surveiller l'accessibilité de la cible.

 

Contrairement à la commande ping sur la plupart des systèmes UNIX ou Linux, la commande ping de STCP ne fait pas de pause entre la réception d'une réponse ping et la demande ping suivante. Comme le nombre de pings par défaut est de 4 seulement, cela ne pose pas de problème. Mais lorsque le nombre de requêtes est augmenté en utilisant l'argument count ou l'argument run_forever, cela peut créer une charge importante sur le système, l'adaptateur Ethernet et le réseau. Cela rend le comportement par défaut de la commande ping de STCP totalement inadapté à la surveillance à long terme d'un hôte cible.

 

Mais, ce n'est pas parce que le comportement par défaut est inadapté que vous ne pouvez pas utiliser la commande ping pour la surveillance à long terme. L'astuce consiste à exécuter la commande de manière répétée en envoyant une demande ping à la fois au lieu d'exécuter la commande une fois et d'envoyer un flux continu de demandes ping. C'est ce que fait la macro suivante.
macro de commande ping_forever
& ping_forever begins here
&
& Version 1.0 09-08-30
& noah.davids@stratus.com
&
&begin_parameters
TARGET   target:string,required
SECONDS  seconds:number=1
TIMEOUT  timeout:number=1
TIMESTAMP switch(-timestamp),=1
&end_parameters
&
&label again
display_line
&if &TIMESTAMP& &then display_line *** (date).(time) ***
ping &TARGET& -count 1 -timeout &TIMEOUT&
sleep -seconds &SECONDS&
&goto again
&
& ping_forever ends here

 

Comme vous pouvez le voir, les deux premiers arguments sont passés directement à la commande ping et correspondent aux arguments host et timeout de ping. Le délai par défaut de Ping est de 15 secondes mais je pense que c'est trop long et dans la macro j'ai changé cela en 1 seconde. Vous pouvez bien sûr l'ajuster soit dans la macro, soit en fournissant une valeur comme argument. Le troisième argument est le nombre de secondes de pause entre les pings, la valeur par défaut est 1 seconde. Comme il faut du temps pour exécuter la macro et pour charger et exécuter la commande ping, le temps réel entre les pings est un peu plus long. Packet_monitor a montré les temps entre 1,05 et 1,1 secondes. Le dernier argument est quelque chose que les ping UNIX ou Linux ne vous donneront pas - un horodatage pour chaque ping afin que vous puissiez dire quand la cible cesse de répondre et quand elle a recommencé. Si vous ne voulez pas les horodatages, vous pouvez les désactiver avec l'argument -no_timestamp.

 

ping_forever example output
ping_forever 164.152.77.6
*** 09-08-30.11:45:38 ***
Pinging host 164.152.77.6 : 164.152.77.6
ICMP Echo Reply:TTL 60 time = 2 ms
Host 164.152.77.6 replied to the ping
*** 09-08-30.11:45:40 ***
Pinging host 164.152.77.6 : 164.152.77.6
ICMP Echo Reply:TTL 60 time = 2 ms
Host 164.152.77.6 replied to the ping
*** 09-08-30.11:45:41 ***
Pinging host 164.152.77.6 : 164.152.77.6
ping: No reply. Time Out !!
Host 164.152.77.6 didn't reply to the ping
*** 09-08-30.11:45:44 ***
Pinging host 164.152.77.6 : 164.152.77.6
ping: No reply. Time Out !!
Host 164.152.77.6 didn't reply to the ping
*** 09-08-30.11:45:47 ***
Pinging host 164.152.77.6 : 164.152.77.6
ICMP Echo Reply:TTL 60 time = 4 ms
Host 164.152.77.6 replied to the ping
*** 09-08-30.11:45:48 ***
Pinging host 164.152.77.6 : 164.152.77.6
ICMP Echo Reply:TTL 60 time = 3 ms
Host 164.152.77.6 replied to the ping

 

2020 Stratus Technologies.