Используйте Linux ping в Cygwin

8

Мне нужно работать со скриптом, который использует ping Команда с ее обычным синтаксисом Linux, ни пакет Cygwin по умолчанию, ни утилита Windows ping не будут работать. На данный момент я исправил сценарий для использования версии для Windows (с некоторыми трудностями; исполняемый файл Windows не предоставляет полезных кодов возврата, поэтому мне нужно проанализировать вывод), но я бы хотел совместимость коробки и дополнительные возможности из Linux пинг. Прежде чем продолжить, позвольте мне заявить, что я запускаю Cygwin в режиме администратора; это не проблема привилегий. Это проблема версий.

Cygwin по умолчанию ping Команда указана как версия «1.0-1» в диспетчере установки, в пакете «ping: базовый сетевой инструмент для проверки подключения к IP-сети». Без аргументов выводит:

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

и описание страницы руководства начинается с «Интернет DARPA - это большое и сложное объединение сетевого оборудования» , что выглядит более чем немного устаревшим для меня. Это версия, установленная в /bin/ping,

Окна ping команда находится в $SYSTEMROOT/system32/pingи выводит следующее сообщение при вызове без параметров.

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

Это, безусловно, более многофункциональный пинг (в частности, он включает таймауты, что важно для меня), но это не та версия, которая доступна в современной установке Linux:

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

задокументировано онлайн Вот , Кажется, я не могу найти ссылки на версию ping для Cygwin, за исключением ссылки на Cygwin.

я нашел эта древняя электронная почта который описывает раннюю версию Cygwin без пинга. Я не нашел ни одной версии iputils, предназначенной для Windows.

Kevin Vermeer
источник

Ответы:

3

Вы могли бы либо

  • попробуйте построить пинг из источника, это часть пакет iputils , Но строить вещи на Cygwin может быть довольно хлопотно.

Или (и я бы попробовал это сначала)

Nifle
источник
Спасибо, похоже, что первый вариант будет работать лучше для меня, поскольку одно из желаемых требований заключается в том, чтобы он имел синтаксис версии iputils, поэтому попытка использования еще одной реализации ping не поможет. Тем не менее, я сомневаюсь, что я первый столкнулся с этим, поэтому я буду ждать, если кто-то уже попробовал это.
Kevin Vermeer
Кстати, iputils не выпускал теги в течение почти двух лет, но была некоторая разработка для поддержки IPv6 в их git-репозитории, который было немного сложно найти, но он находится по адресу `git: //git.linux- ipv6.org / gitroot / iputils.git`. Надеюсь, что это помогает кому-то. Я опубликую патч, когда я закончу с этим, предстоит проделать немалую работу, но он не кажется непреодолимым.
Kevin Vermeer
1
Если у вас получится построить iputils для Cygwin, я сильно подозреваю, что остальная часть сообщества Cygwin тоже с удовольствием это сделает.
me_and
@ me_and - я бы обязательно выпустил его, если мне удастся. Тем не менее, хотя первые несколько файлов скомпилированы просто отлично, просто изменив #include <linux/filename.h> в #include <cygwin/filename.h> и тому подобное, позже я обнаружил, что драйверам сокетов Cygwin также не хватает функций, необходимых для iputils. Это не просто вопрос создания iputils для Cygwin, это также вопрос создания Cygwin для работы с iputils. Я попробую позже, если у меня будет свободное время.
Kevin Vermeer