Muszę pracować ze skryptem, który używa ping
polecenia ze zwykłą składnią Linuksa, ani domyślny pakiet Cygwin, ani narzędzie ping systemu Windows nie będzie działać. Na razie załatałem skrypt, aby używał wersji Windows (z pewnym trudem; plik wykonywalny Windows nie zapewnia użytecznych kodów powrotu, więc muszę przeanalizować dane wyjściowe), ale chciałbym, aby nie wchodziło w grę kompatybilność z pudełkami i dodatkowe funkcje pingowania Linuksa. Zanim przejdę dalej, pozwól mi stwierdzić, że korzystam z Cygwin w trybie administratora; to nie jest kwestia przywilejów. To problem z wersjami.
Domyślne ping
polecenie Cygwin jest wymienione w wersji „1.0-1” w menedżerze instalacji, w pakiecie „ping: podstawowe narzędzie sieciowe do testowania łączności sieci IP”. Bez argumentów wyświetla:
Usage: ping [-dfqrv] host [packetsize [count [preload]]]
a opis strony podręcznika zaczyna się od „Internet DARPA jest dużą i złożoną agregacją sprzętu sieciowego” , co dla mnie brzmi jak trochę nieaktualne. To jest wersja zainstalowana w /bin/ping
.
ping
Polecenie systemu Windows znajduje się pod adresem $SYSTEMROOT/system32/ping
i wyświetla następujący komunikat przy wywołaniu bez parametrów.
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
Jest to z pewnością bardziej bogaty w funkcje ping (w szczególności obejmuje on limity czasu, co jest dla mnie ważne), ale nie jest to wersja dostępna w nowoczesnej instalacji Linuksa:
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
udokumentowane tutaj online . Wydaje mi się, że nie mogę znaleźć odniesień do cygwin w wersji ping, z wyjątkiem odniesienia do Cygwin.
Znalazłem ten starożytny wątek e-mail, który opisuje wczesną wersję Cygwin bez polecenia ping. Nie znalazłem żadnej wersji iputils zaprojektowanej dla systemu Windows.
#include <linux/filename.h>
na#include <cygwin/filename.h>
i tym podobne, później odkryłem, że w sterownikach gniazd Cygwin brakuje również funkcji wymaganych przez iputils. Dla Cygwina nie chodzi tylko o budowanie iputils, ale także o Cygwin do pracy z iputils. Spróbuję później, jeśli będę miał trochę wolnego czasu.