shell脚本中的tcpdump不会捕获任何内容

时间:2013-04-19 02:00:08

标签: linux tcpdump

我想启动一个TCP程序并捕获相关的数据包, 我的shell脚本cap.sh如下:

    sudo tcpdump -i eth0 -w mypcap &
    sleep 3
    ./tcp_receiver
    sleep 2
    x=`ps -ef|grep "tcpdump"|grep -v "grep"|awk '{print $2}'`
    sudo kill -9 $x

我运行cap.sh

    sudo ./cap.sh

所以实际上在这个shell中,我可以在没有密码的情况下运行sudo 并且主机只是远程机器上的虚拟切片(PLanetlab节点) 虽然我可以从tcpdump看到流程ps -ef 它什么也没捕捉到 在mypcap完成

之后,我看到cap.sh文件是0字节

有什么可能的原因? 以及如何使shell脚本中的tcpdump捕获数据包? 谢谢!

2 个答案:

答案 0 :(得分:4)

请勿使用kill -9。它不仅几乎总是错误的事情,它可能导致问题在这里,通过丢弃缓冲数据而不是写入磁盘。使用普通的旧杀,或kill -2

另一种选择是添加-U选项以在每个数据包之后刷新输出缓冲区。

答案 1 :(得分:0)

一个可能的原因:虚拟化环境中不存在eth0。