Використовуйте Linux ping у Cygwin


8

Мені потрібно працювати зі скриптом, який використовує pingкоманду зі звичайним синтаксисом Linux, ні пакет за замовчуванням Cygwin, ні утиліта Windows ping не працюватимуть. Наразі я зашифрував сценарій, щоб використовувати версію Windows (з певними труднощами; виконуваний файл Windows не надає корисних кодів повернення, тому мені доведеться проаналізувати вихід), але мені б хотілося, щоб вийшов з-за- сумісність коробки та додаткові функції Linux ping. Перш ніж я продовжую, дозвольте констатувати, що я запускаю Cygwin в режимі адміністратора; це не питання привілеїв. Це випуск версій.

pingКоманда Cygwin за замовчуванням вказана як версія "1.0-1" в диспетчері налаштувань, в пакеті "ping: основний мережевий інструмент для перевірки підключення до мережі IP". Без аргументів, він виводить:

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

а опис чоловічої сторінки починається з "Інтернет DARPA - це велика і складна сукупність мережевих апаратних засобів" , яка читається як більш ніж застаріла для мене. Це версія, встановлена ​​в /bin/ping.

pingКоманда Windows розміщена за адресою $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

Це, звичайно, більш насичений функцією ping (зокрема, він включає в себе таймаути, що для мене важливо), але це не версія, доступна в сучасній установці 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

тут задокументовано в Інтернеті . Здається, я не можу знайти посилання на cygwin-версію ping, за винятком посилання на Cygwin.

Я знайшов цей древній потік електронної пошти, який описує ранню версію Cygwin без ping. Я не знайшов жодної версії iputils, призначеної для Windows.

Відповіді:


3

Ви могли б або

  • спробуйте створити ping з джерела, це частина пакета iputils . Але побудувати речі на cygwin може бути досить складно.

Або (і я спробую це спершу)


Дякую, схоже, перший варіант стане для мене кращим, оскільки одна з бажаних вимог - це те, що він має синтаксис версії iputils, тому спроба чергової реалізації ping не допоможе. Це сказав, я сумніваюся, що я перший, хто зіткнувся з цим, тому я зачекаю, якщо хтось уже це спробував.
Кевін Вермер

До речі, iputils не випустив тег майже два роки, але для підтримки IPv6 у їхньому репозиторії git було розроблено певну розробку, яку було важко знайти, але вона розташована на `git: //git.linux- ipv6.org / gitroot / iputils.git`. Сподіваюся, що хтось допомагає. Я викладу патч, коли я закінчу з цим, треба зробити трохи роботи, але це не здається нездоланним.
Кевін Вермер

1
Якщо ви дістанетесь кудись зі створення iputils для Cygwin, я сильно підозрюю, що решта громади Cygwin хотіла б також зайнятися цим.
me_і

@me_and - я б точно випустив його, якщо мені це вдасться. Однак, хоча перші кілька файлів, складені просто чудово, просто змінившись #include <linux/filename.h>на #include <cygwin/filename.h>подібні, я пізніше виявив, що у драйверів сокетів Cygwin також відсутні функції, необхідні iputils. Це не лише питання створення iputils для Cygwin, це також питання побудови Cygwin для роботи з iputils. Я поїду пізніше, якщо у мене буде трохи вільного часу.
Кевін Вермер
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.