加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux – tcpdump在shell脚本中捕获任何内容

发布时间:2020-12-13 23:04:56 所属栏目:Linux 来源:网络整理
导读:我想启动一个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 所以实际上
我想启动一个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节点)
虽然我可以从ps -ef看到进程tcpdump
它什么也没捕捉到
在cap.sh完成后,我看到mypcap文件是0字节

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

解决方法

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读