Utiliser le ping Linux dans Cygwin

8

J'ai besoin de travailler avec un script qui utilise la pingcommande avec sa syntaxe Linux ordinaire, ni le package par défaut de Cygwin ni l'utilitaire ping de Windows ne fonctionneront. Pour l'instant, j'ai corrigé le script pour utiliser la version Windows (avec quelques difficultés; l'exécutable Windows ne fournit pas de codes de retour utiles, donc je dois analyser la sortie), mais j'aimerais le sortir de l'- compatibilité de la boîte et fonctionnalités supplémentaires du ping Linux. Avant d'aller plus loin, permettez-moi de déclarer que j'exécute Cygwin en mode administrateur; ce n'est pas une question de privilège. C'est un problème de versions.

La pingcommande par défaut de Cygwin est répertoriée comme étant la version «1.0-1» dans le gestionnaire de configuration, dans le package «ping: un outil réseau de base pour tester la connectivité réseau IP». Sans argument, il génère:

Usage:  ping [-dfqrv] host [packetsize [count [preload]]]

et la description de la page de manuel commence par "Internet DARPA est une agrégation large et complexe de matériel réseau" , qui me paraît plus que peu à jour. Il s'agit de la version installée dans /bin/ping.

La pingcommande de Windows se trouve sur $SYSTEMROOT/system32/pinget génère le message suivant lors de l'invocation sans paramètres.

Usage: ping [-t] [-a] [-n count] [-l size] [-f] [-i TTL] [-v TOS]
        [-r count] [-s count] [[-j host-list] | [-k host-list]]
        [-w timeout] target_name

C'est certainement un ping plus riche en fonctionnalités (notamment, il inclut des délais d'attente, ce qui est important pour moi), mais ce n'est pas la version disponible sur une installation Linux moderne:

ping [ -LRUbdfnqrvVaAB] [ -c count] [ -i interval] [ -l preload] [ -p pattern] 
     [ -s packetsize] [ -t ttl] [ -w deadline] [ -F flowlabel] [ -I interface] 
     [ -M hint] [ -Q tos] [ -S sndbuf] [ -T timestamp option] [ -W timeout] 
     [ hop ...] destination

documenté en ligne ici . Je n'arrive pas à trouver des références à la version cygwin de ping, sauf en référence à Cygwin.

J'ai trouvé cet ancien fil de discussion qui décrit une première version de Cygwin sans ping. Je n'ai trouvé aucune version d'iputils conçue pour Windows.

Kevin Vermeer
la source

Réponses:

3

Vous pouvez soit

  • essayez de construire ping à partir de la source, cela fait partie du package iputils . Mais construire des trucs sur cygwin peut être très compliqué.

Ou (et j'essaierais cela en premier)

Nifle
la source
Merci, il semble que la première option fonctionnera mieux pour moi car l'une des exigences souhaitées est d'avoir la syntaxe de la version iputils, donc essayer une autre implémentation ping ne sera pas utile. Cela dit, je doute que je sois le premier à avoir rencontré cela, alors j'attendrai au cas où quelqu'un l'aurait déjà essayé.
Kevin Vermeer
Soit dit en passant, iputils n'a pas publié de balise depuis près de deux ans, mais il y a eu un certain développement pour la prise en charge d'IPv6 dans leur référentiel git, qui était un peu difficile à trouver mais se trouve à `git: //git.linux- ipv6.org / gitroot / iputils.git ». J'espère que cela aide quelqu'un. Je posterai le patch quand j'aurai fini avec ça, il y a pas mal de travail à faire mais cela ne semble pas insurmontable.
Kevin Vermeer
1
Si vous obtenez quelque part avec la construction d'iputils pour Cygwin, je soupçonne fortement que le reste de la communauté Cygwin aimerait aussi y aller.
me_and
@me_and - Je le libérerais certainement si je réussissais. Cependant, alors que les premiers fichiers ont été compilés très bien en changeant simplement #include <linux/filename.h>en #include <cygwin/filename.h>etc., j'ai constaté plus tard que les pilotes de socket Cygwin manquaient également de fonctionnalités nécessaires à iputils. Ce n'est pas seulement une question de construction d'iputils pour Cygwin, c'est aussi une question de construction de Cygwin pour travailler avec iputils. J'essaierai plus tard si j'ai du temps libre.
Kevin Vermeer