Pergunta

Eu tenho um comando tcpdump em um script bash. Parece algo assim.

tcpdump -nttttAr /path/to/file -F /my/filter/file

O arquivo de filtro possui uma combinação de endereços IP e nomes de host. ou seja, host 111.111.111.111 ou host 112.112.112.112 e não (host abc.com ou host def.com ou host zyx.com).

E funciona muito bem - desde que os nomes dos hosts sejam válidos. Meu problema às vezes é que esses nomes de host não serão válidos e, ao encontrar um - tcpdump cuspir

tcpdump: Unknown Host

Eu pensei que, com a opção -n, ele ignoraria a pesquisa do DNS - mas em qualquer caso eu precisar para ignorar o host desconhecido e continuar ao longo do arquivo de filtro.

Alguma ideia?

Agradeço antecipadamente.

Foi útil?

Solução

o -n A opção impede a conversão de endereços IP em nomes, mas não o contrário. Se você fornecer um nome de host como argumento, ele deve ser procurado para obter o endereço IP, pois os pacotes contêm apenas o endereço numérico e não o nome do host. No entanto, deve haver uma maneira de ignorar nomes de host inválidos, mas não consigo encontrar um. Talvez você possa pré-processar seu arquivo de filtro usando dig.

dig +short non-existent-domain.com    # returns null
dig +short google.com                 # returns multiple IP addresses

Provavelmente isso poderia ser melhor, mas deve mostrar os nomes de host em seu arquivo de filtro que não são válidos:

grep -Po '(?<=host )[^ )]*' filterfile | grep -v '[0-9]$' | xargs -I % sh -c 'echo -n "% "; echo $(dig +short %)' | grep -v ' [0-9]'

Quaisquer nomes de host que impressões não tinham endereços IP devolvidos por dig.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top