shell 之统计网络数据包

统计网络数据包
介绍

实验楼的环境有的时候需要检测下网络通信状况,例如某个端口统计有多少数据包传输。

目前有一个需求,实现一个 Bash 脚本 /home/shiyanlou/netcheck.sh,获取指定端口的数据包统计信息。这个脚本输入参数为统计的目标端口号,只会执行3秒钟,并打印这3秒钟指定端口传输的数据包数量。

例如:

$ /home/shiyanlou/netcheck.sh 22
Packages: 2

目标

完成的脚本必须放置在 /home/shiyanlou/netcheck.sh
脚本执行时需要输入一个端口号作为参数,脚本执行时间为3秒钟
脚本执行后输出一行,统计的是脚本执行3秒钟期间进出该端口的数据包总数量

提示语

tcpdump
知识点

Linux 网络
网络数据统计
端口

来源

实验楼研发团队

这里比较纠结的是如何统计3秒内的数据包!前两次没做出来,今天偶然看到了timeout这个命令,才发现自己的见识少是真的少。所以先介绍timeout命令!

man timeout
#timeout - run a command with a time limit

timeout 3 commands
#如果commands在3秒内结束,则平安结束,如果不结束,则3秒后命令将被kill

在介绍一下抓包工具tcpdump
常用选项

-i  后跟设备名称
-c  指定抓包数量,抓够了自动退出
port    指定端口
-nn 直接以IP及port number显示,而非主机名与服务名称
-w  后接文件名,将监听所得的数据包存储下来(二进制存储)
-r  后接文件名(-w存储的文件),将这个文件读取出来

其余选项你可以通过man tcpdump一下得到!

上面题目的代码如下:

#!/bin/bash
timeout 3 tcpdump -i eth0 -nn port $1 -w out.txt &>/dev/null
num=`tcpdump -r out.txt 2>/dev/null | wc -l`
echo "Packages: $num"
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值