Quiero mantener un rastro de la URL que visito, así que uso una línea de comando como esta:
tcpdump -ien1 -v -X 'puerto tcp 80' | sed -nl 's/^.0x[0-9a-f]{4}:.{43}(.)$/\1/p' |perl break.pl |perl -pe 's/(GET|POST).(.?).HTTP/1....Anfitrión:.([a-zA-Z._0-9-])../"\nBEGURL ".localtime().": $1 http://$3$2\n"/ge' | grep "^BEGURL"
Está funcionando bien, una URL por línea. Pero si lo hago
tcpdump -ien1 -v -X 'puerto tcp 80' | sed -nl 's/^.0x[0-9a-f]{4}:.{43}(.)$/\1/p' |perl break.pl |perl -pe 's/(GET|POST).(.?).HTTP/1....Anfitrión:.([a-zA-Z._0-9-])../"\nBEGURL ".localtime().": $1 http://$3$2\n"/ge' | grep "^BEGURL">> /tmp/salida
(observe el final >> /tmp/out) ¡Entonces el archivo está vacío! ¿Sabes por qué? Es totalmente ilógico para mí.
También intenté redirigir stdout y stderr a /tmp/out, todavía está vacío. El archivo tiene acceso de escritura. No tengo idea de qué puede ser. ¿Hay algo más que stdout y stderr?
para cualquier ayuda.
Respuesta1
Puede querer decir que ha intentado esto cuando dice "También intenté redirigir stdout y stderr a /tmp/out", pero parece ser el problema más probable: intente agregar 2>&1 al final.
De lo contrario, para ayudar a depurar, intente agregar 2>/dev/null a su primer comando y vea si aún obtiene resultados.
Además, ¿puedes simplificar el comando para realizar pruebas? Por ejemplo, ¿funciona esto?
tcpdump -ien1 -v -X 'tcp port 80' >> /tmp/out
Respuesta2
Tuve el mismo problema hace apenas unos días. Intente usar la -w
opción para escribir los paquetes en un archivo. Para más información, ver man tcpdump
.