Preciso trabalhar com um script que use o ping
comando 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 ping
comando 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 ping
comando do Windows está localizado em $SYSTEMROOT/system32/ping
e 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.
#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.