Estou tentando espelhar as consultas de DNS geradas pelo filtro TCPDUMP e reproduzi-las com escavação ou qualquer outro utilitário

0

Eu não sou um roteirista muito experiente. Eu encontrei algumas dicas úteis na geração de um stdout de tcpdump que gera um feed ao vivo se você quiser o que eu quero, o problema é lidar com a saída e gerar consultas dig / DNS contra outro servidor DNS para um laboratório .

Dê-me a saída que estou procurando:

tcpdump -lvi any "udp port 53" 2>/dev/null|grep -E 'A\?'|awk '{print $(NF-1)}'

Eu tentei isso apenas testando adicionando a saída em uma matriz, mas não recebo nada

declare -a testarr
testarr=( $(tcpdump -lvi any "udp port 53" 2>/dev/null|grep -E 'A\?'|awk '{print $(NF-1)}') )
echo ${testarr[@]}

Eu também tentei

dig @1.1.1.1 $(tcpdump -lvi any "udp port 53" 2>/dev/null|grep -E 'A\?'|awk '{print $(NF-1)}')

Qualquer ajuda é apreciada.

    
por carter 12.09.2014 / 23:04

1 resposta

0

O problema é que $() retorna somente quando tcpdump sai, mas nunca sairá no seu caso. Você pode redirecionar a saída para o comando xargs - ele pode executar dig antes de tcpdump exits

código de exemplo:

tcpdump -nvi any "udp port 53" 2>/dev/null|awk '/A\?/{print $(NF-1);fflush()}' | xargs -n 1 dig @1.1.1.1 

Observe também que awk output pode ser armazenada em buffer, então você deve liberar a saída em seu programa awk .

    
por 12.09.2014 / 23:17

Tags