Verwenden Sie Linux-Ping in Cygwin

8

Ich muss mit einem Skript arbeiten, das den pingBefehl mit seiner normalen Linux-Syntax verwendet. Weder das Standardpaket von Cygwin noch das Windows-Ping-Dienstprogramm funktionieren. Im Moment habe ich das Skript gepatcht, um die Windows-Version zu verwenden (mit einigen Schwierigkeiten; die ausführbare Windows-Datei bietet keine nützlichen Rückkehrcodes, daher muss ich die Ausgabe analysieren), aber ich möchte die Out-of-the- Box-Kompatibilität und zusätzliche Funktionen des Linux-Pings. Bevor ich fortfahre, möchte ich angeben, dass ich Cygwin im Administratormodus ausführe. Es ist keine Privilegienfrage. Es ist ein Versionsproblem.

Der Standardbefehl von Cygwin pingwird im Setup-Manager im Paket 'ping: Ein grundlegendes Netzwerk-Tool zum Testen der IP-Netzwerkkonnektivität' als Version '1.0-1' aufgeführt. Ohne Argumente wird Folgendes ausgegeben:

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

und die Beschreibung der Manpage beginnt mit "Das DARPA-Internet ist eine große und komplexe Ansammlung von Netzwerkhardware" , die für mich mehr als veraltet ist. Dies ist die Version, in der installiert ist /bin/ping.

Der Windows- pingBefehl befindet sich unter $SYSTEMROOT/system32/pingund gibt beim Aufruf ohne Parameter die folgende Meldung aus.

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

Dies ist sicherlich ein Ping mit vielen Funktionen (insbesondere enthält es Zeitüberschreitungen, was für mich wichtig ist), aber es ist nicht die Version, die bei einer modernen Linux-Installation verfügbar ist:

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

hier online dokumentiert . Ich kann anscheinend keine Verweise auf die Cygwin-Version von Ping finden, außer in Bezug auf Cygwin.

Ich habe diesen alten E-Mail-Thread gefunden, der eine frühe Version von Cygwin ohne Ping beschreibt. Ich habe keine Version von iputils für Windows gefunden.

Kevin Vermeer
quelle

Antworten:

3

Du könntest es auch

Oder (und ich würde es zuerst versuchen)

Nifle
quelle
Vielen Dank, es sieht so aus, als würde die erste Option für mich besser funktionieren, da eine der gewünschten Anforderungen darin besteht, dass sie die Syntax der iputils-Version hat. Daher hilft es nicht, eine weitere Ping-Implementierung zu versuchen. Trotzdem bezweifle ich, dass ich der Erste bin, der darauf gestoßen ist, also werde ich warten, falls jemand es bereits versucht hat.
Kevin Vermeer
Übrigens hat iputils seit fast zwei Jahren kein Tag mehr veröffentlicht, aber es gibt einige Entwicklungen für die Unterstützung von IPv6 in ihrem Git-Repository, das etwas schwer zu finden war, sich aber unter `git: //git.linux- befindet. ipv6.org / gitroot / iputils.git`. Hoffe das hilft jemandem. Ich werde den Patch veröffentlichen, wenn ich damit fertig bin. Es gibt noch einiges zu tun, aber es scheint nicht unüberwindbar.
Kevin Vermeer
1
Wenn Sie mit dem Bau von Iputils für Cygwin irgendwohin kommen, vermute ich stark, dass der Rest der Cygwin-Community es auch gerne tun würde.
me_and
@me_and - Ich würde es definitiv veröffentlichen, wenn ich Erfolg habe. Während jedoch die ersten paar Dateien kompiliert ganz gut durch einfaches Ändern #include <linux/filename.h>zu #include <cygwin/filename.h>und dergleichen, wie ich später , dass die Cygwin Socket - Treiber sind auch Funktionen benötigt von iputils fehlen. Es geht nicht nur darum, Iputils für Cygwin zu erstellen, sondern auch darum, Cygwin für die Arbeit mit Iputils zu erstellen. Ich werde es später versuchen, wenn ich etwas Freizeit habe.
Kevin Vermeer