J'essaie d'écrire un script qui répertorie tous les hôtes de mon réseau local (il y en a environ 20) et écrit l'état du ping à côté de chaque hôte. J'ai le fichier de baux DHCP, j'ai donc toutes les adresses IP (par exemple, 10.0.0.1, 10.0.0.2, etc.), tout ce dont j'ai besoin est l'état du ping pour chaque hôte.
Donc, mon script lance un seul ping pour chaque hôte:
ping -c 1 10.0.0.1
Malheureusement, lorsqu'un hôte est hors ligne, la requête ping prend du temps à expirer. J'ai vérifié man ping
, il semble y avoir deux options pour définir le délai d'expiration: -w deadline
et -W timeout
. Je pense que je suis intéressé par ce dernier.
Alors j'ai essayé ceci:
ping -c 1 -W 1 10.0.0.1
Mais attendre une seconde par hôte hors ligne est encore trop long. J'ai essayé de le régler en dessous d'une seconde, mais il ne semble pas prendre en compte le paramètre du tout:
ping -c 1 -W 0.1 10.0.0.1 # timeout option is ignored, apparently
Existe-t-il un moyen de régler le délai d’attente sur une valeur inférieure? Si non, y a-t-il des alternatives?
Modifier
- Le système d'exploitation est Debian Lenny.
- Les hôtes sur lesquels j'essaie de faire un ping sont en réalité des points d'accès. Ils sont sur le même vlan et le même sous-réseau que les utilisateurs (pour simplifier le déploiement et le remplacement). C'est pourquoi je ne veux pas analyser tout le sous-réseau (avec un
ping -b
exemple).
Modifier # 2
J'ai accepté la fping
solution (merci pour toutes les autres réponses). Cette commande fait exactement ce que je cherchais:
fping -c1 -t500 10.0.0.1 10.0.0.2 10.0.0.3 10.0.0.4
Cette commande dure au maximum 500 ms et me donne l’état du ping de tous les hôtes à la fois:
10.0.0.1 : [0], 84 bytes, 5.71 ms (5.71 avg, 0% loss)
10.0.0.2 : [0], 84 bytes, 7.95 ms (7.95 avg, 0% loss)
10.0.0.3 : [0], 84 bytes, 16.1 ms (16.1 avg, 0% loss)
10.0.0.4 : [0], 84 bytes, 48.0 ms (48.0 avg, 0% loss)
10.0.0.1 : xmt/rcv/%loss = 1/1/0%, min/avg/max = 5.71/5.71/5.71
10.0.0.2 : xmt/rcv/%loss = 1/1/0%, min/avg/max = 7.95/7.95/7.95
10.0.0.3 : xmt/rcv/%loss = 1/1/0%, min/avg/max = 16.1/16.1/16.1
10.0.0.4 : xmt/rcv/%loss = 1/1/0%, min/avg/max = 48.0/48.0/48.0
Sur Debian Lenny, l’installation est triviale:
aptitude update
aptitude install fping
Pour les personnes recherchant une solution impliquant
ping
, utilisez le-i
commutateur.Ou, si vous voulez utiliser 0.1, vous devrez l'exécuter en tant que root
Pas besoin de télécharger des utilitaires supplémentaires.
la source
ping
attente pour une réponse - elle envoie simplement des pings consécutifs plus rapidement ....Vous pouvez définir un court délai avec la
timeout
commande sur Ubuntu / Debian:la source
timeout (GNU coreutils) 8.4
.DURATION is a floating point number with an optional suffix: 's' for seconds (the default),
... Dans mesman timeout
rapports de casGNU coreutils 8.26
. BWT, j'utilise Ubuntu 17.04.J'utiliserais nmap pour cette tâche.
nmap -sP --max-retries=1 --host-timeout=1500ms 10.0.0.1
Consultez la documentation de nmap pour plus de détails à ce sujet.
la source
vous voudrez peut-être consulter l'outil ping d'arp si tous vos hôtes se trouvent sur le réseau local physique. Il fait la même chose mais utilise des paquets arp de couche 2 pour effectuer le "ping". Vous pouvez utiliser une combinaison d'arping et de ping icmp, ou en fait de ping tcp, pour déterminer la nature de l'échec. Exemple: un crash de pile TCP, bien que cela soit rare de nos jours, nous pourrions trouver si une pile TCP de machine s’était écrasée, car la machine ne répondrait pas au ping, mais elle répondrait à l’ARP (qui est un morceau de code différent sur l’hôte). .
En combinant arpping, tcpping et icmp ping, vous pouvez savoir si le service sur la machine est tombé en panne, si la pile TCP est tombée en panne ou si la machine est complètement verrouillée. Si vous avez géré des commutateurs Ethernet, vous pouvez obtenir des données de liaison physique, en indiquant si la machine est réellement allumée ou si elle avait été physiquement débranchée. Nous avons eu une situation où les machines (clients dans les salles publiques) seraient éteintes, nous avons rassemblé ces données et les paquets de réveil envoyés, pour alimenter les machines. :-)
Quelles que soient les solutions que vous développez, si votre réseau est occupé, pensez à mettre en œuvre une sorte de QOS, afin que vos paquets de surveillance soient prioritaires sur le réseau. La perte de paquets de mesure en raison de la congestion du réseau peut donner de fausses alarmes. Si vous utilisez qos pour surveiller les paquets, vous devrez alors réfléchir à la collecte de données sur l'utilisation du réseau.
Ainsi, vous pouvez rendre votre solution de surveillance aussi complexe ou aussi simple que vous le souhaitez. Nous trouvons que même le système de surveillance le plus élémentaire est un pas dans la bonne direction, au moins un administrateur surveille les machines :-).
bonne chance!
la source
@ jordon-bedwell a une excellente suggestion.
@ laszlo-valko https://stackoverflow.com/questions/20359487/why-does-ping-not-timeout-in-linux explique que les délais d'attente de ping ne commencent que lorsque l'adresse IP a été déterminée. Si vous utilisez un DNS et que votre poste de travail est hors ligne, alors ping ne peut pas déterminer l'adresse IP et semble donc attendre environ 20 secondes par défaut avant de renvoyer false.
L'utilisation de l'outil 'timeout' de linux offre plus de contrôle lors de l'exécution de ping avec un nom de domaine.
Merci les gars
la source
Utilisez le commutateur -w , sous Windows et Debian.
C'est un moyen rapide de vérifier si la machine répond, en supposant qu'elle répondra dans un délai inférieur au nombre de secondes spécifié.
la source
Si vous pouvez analyser votre sous-réseau (ou une partie de celui-ci) sans déclencher des alarmes de sécurité, sans vous soucier de quelques données supplémentaires, Angry IP Scanner est rapide et gratuit, vous permet de cliquer pour trier par statut et de fournir des informations plus détaillées. .
la source
Pourquoi ne pas lancer ping en arrière-plan, avec la sortie dans un fichier temporaire, en parallèle pour chaque hôte? Mettez-vous ensuite en veille, arrêtez tous les processus ping en cours et lisez les fichiers pour collecter la sortie.
la source
Le délai d'attente est une valeur entière indiquant la distance et la longueur du paquet pouvant être envoyé. Les valeurs inférieures à 1 n'ont pas de sens. Une valeur de 1 indique que vous envoyez une requête ping aux voisins immédiats uniquement.
La seule façon d'accélérer les choses est d'effectuer une vérification des antécédents et de récolter les résultats. C'est ce que font des outils comme Nagios.
la source
Vous pouvez essayer quelque chose comme ça. Mais cela prend 15 minutes pour courir.
la source
nmap
serait le bon outil pour le travail.essaye ça:
la source
fping
?ping a les options [-t timeout] et [-W waittime] pour que vous puissiez faire:
la source