Quero manter um rastreamento do URL que visito, então uso uma linha de comando como esta:
tcpdump -ien1 -v -X 'porta tcp 80' | sed -nl 's/^.0x[0-9a-f]{4}:.{43}(.)$/\1/p' |perl break.pl |perl -pe 's/(GET|POST).(.?).HTTP/1....Host:.([a-zA-Z._0-9-]../"\nBEGURL ".localtime().": $1 http://$3$2\n"/ge' | grep "^BEGURL"
Está funcionando bem, um URL por linha. Mas se eu fizer
tcpdump -ien1 -v -X 'porta tcp 80' | sed -nl 's/^.0x[0-9a-f]{4}:.{43}(.)$/\1/p' |perl break.pl |perl -pe 's/(GET|POST).(.?).HTTP/1....Host:.([a-zA-Z._0-9-]../"\nBEGURL ".localtime().": $1 http://$3$2\n"/ge' | grep "^BEGURL">> /tmp/saída
(observe o final >> /tmp/out) Então o arquivo está vazio! Você sabe por quê? É totalmente ilógico para mim.
Também tentei redirecionar stdout e stderr para/tmp/out, ainda está vazio. O arquivo tem acesso de gravação. Não tenho ideia do que pode ser. Existe algo além de stdout e stderr?
para qualquer ajuda.
Responder1
Você pode querer dizer que já tentou isso quando diz "Eu também tentei redirecionar stdout e stderr para /tmp/out" - mas parece ser o problema mais provável: então tente adicionar 2>&1 ao final.
Caso contrário, para ajudar na depuração, tente adicionar 2>/dev/null ao seu primeiro comando e veja se você ainda obtém saída.
Além disso, você pode simplificar o comando para teste? Por exemplo, isso funciona:
tcpdump -ien1 -v -X 'tcp port 80' >> /tmp/out
Responder2
Eu tive o mesmo problema há apenas alguns dias. Tente usar a -w
opção de gravar os pacotes em um arquivo. Para mais informações, veja man tcpdump
.