Estoy tratando de reflejar las consultas dns generadas por el filtro TCPDUMP y reproducirlas con dig o cualquier otra utilidad

0

No soy un guionista muy experimentado en absoluto. Lo que encontrar algunos consejos útiles en la generación de una stdoutde tcpdumpque genera una señal en vivo si se quiere, que es lo que quiero, el problema es el manejo de la salida y generar consultas excavación / DNS contra otro servidor DNS para un laboratorio.

Dame el resultado que estoy buscando:

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

He intentado esto solo probando agregar la salida a una matriz pero no obtengo nada

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

También he intentado

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

Cualquier ayuda es apreciada.

carretero
fuente

Respuestas:

0

El problema es que $()solo regresa cuando tcpdumpsale, pero nunca saldrá en su caso. Puede redirigir la salida al xargscomando; puede ejecutarse digantes de tcpdumpsalir

código de ejemplo:

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

También tenga en cuenta que la awksalida se puede almacenar en búfer, por lo que debe vaciar la salida en su awkprograma.

Alexander Kudrevatykh
fuente
Esto no está funcionando para mí. Intenté hacer eco de la salida -t en caso de que se estuviera ejecutando en segundo plano, he confirmado que el servidor dns no está recibiendo las consultas, pero también he confirmado que puedo hacer consultas de excavación desde este host de prueba. ¿Cómo puedo amortiguar awk?
carter
no debe almacenar en memoria intermedia awk, sino todo lo contrario: debe enjuagar la salida awk, además, no debe almacenar en memoria intermedia la salida de tcpdump con el -lindicador y debe tener en cuenta que grep también puede almacenar la salida en memoria intermedia.
Actualicé
Esto parece funcionar: "sudo tcpdump -lvi any" udp port 53 "2> / dev / null | grep -E 'A \?' | Awk '{print $ (NF-1); fflush (stdout)}' | xargs -n 1 dig @ 1.1.1.1 "Esto pone el indicador en>:" sudo tcpdump -lvi any "udp port 53" 2> / dev / null | awk '/ A \? / {print $ (NF-1) ; fflush ()} '| xargs -n 1 dig @ 1.1.1.1 "Creo que tengo lo que necesito. ¿Crees que esto puede ejecutarse en un proceso de grupo de retroceso con '%'? @AlexanderKudrevatykh
carter