Use o ping do Linux no Cygwin

8

Preciso trabalhar com um script que use o pingcomando com sua sintaxe comum do Linux, nem o pacote padrão do Cygwin nem o utilitário ping do Windows funcionarão. Por enquanto, corrigi o script para usar a versão do Windows (com alguma dificuldade; o executável do Windows não fornece códigos de retorno úteis, por isso tenho que analisar a saída), mas gostaria que o compatibilidade de caixa e recursos adicionais do ping do Linux. Antes de prosseguir, deixe-me declarar que estou executando o Cygwin no modo administrador; não é uma questão de privilégio. É uma questão de versões.

O pingcomando padrão do Cygwin é listado como sendo a versão '1.0-1' no gerenciador de instalação, no pacote 'ping: uma ferramenta básica de rede para testar a conectividade de rede IP'. Sem argumentos, ele gera:

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

e a descrição da página de manual começa com "A Internet DARPA é uma agregação grande e complexa de hardware de rede" , que me parece um pouco desatualizada. Esta é a versão instalada no /bin/ping.

O pingcomando do Windows está localizado em $SYSTEMROOT/system32/pinge gera a seguinte mensagem na chamada sem parâmetros.

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

Este certamente é um ping mais rico em recursos (principalmente, inclui tempos limite, o que é importante para mim), mas não é a versão disponível em uma instalação moderna do 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

documentado online aqui . Não consigo encontrar referências à versão cygwin do ping, exceto em referência ao Cygwin.

Encontrei este antigo tópico de email que descreve uma versão anterior do Cygwin sem ping. Não encontrei nenhuma versão do iputils projetada para Windows.

Kevin Vermeer
fonte

Respostas:

3

Você poderia

  • tente criar ping a partir da fonte, faz parte do pacote iputils . Mas construir coisas no cygwin pode ser um grande aborrecimento.

Ou (e eu tentaria isso primeiro)

Nifle
fonte
Obrigado, parece que a primeira opção funcionará melhor para mim, pois um dos requisitos desejados é que ele tenha a sintaxe da versão do iputils, portanto, tentar outra implementação de ping não ajudará. Dito isto, duvido que tenha sido o primeiro a me deparar com isso, então espero que alguém já tenha tentado.
Kevin Vermeer
A propósito, o iputils não lançou um tag em quase dois anos, mas houve algum desenvolvimento para suporte ao IPv6 em seu repositório git, o que foi um pouco difícil de encontrar, mas está localizado em `git: //git.linux- ipv6.org / gitroot / iputils.git`. Espero que ajude alguém. Vou postar o patch para quando terminar isso, há um bom trabalho a ser feito, mas não parece intransponível.
22612 Kevin Vermeer
11
Se você chegar a algum lugar com a criação de iputils para Cygwin, eu suspeito fortemente que o resto da comunidade Cygwin também adoraria.
me_and
@ me_and - eu definitivamente liberaria se conseguisse. No entanto, embora os primeiros arquivos tenham sido compilados simplesmente mudando #include <linux/filename.h>para algo #include <cygwin/filename.h>semelhante, descobri mais tarde que os drivers de soquete Cygwin também não possuem os recursos necessários para o iputils. Não é apenas uma questão de construir iputils para Cygwin, é também uma questão de criar Cygwin para trabalhar com iputils. Vou tentar mais tarde, se tiver algum tempo livre.
21912 Kevin Vermeer