Linux学习与应用技巧IT技术分享

实验楼之统计网络数据包

2019-10-23  本文已影响0人  IT大表哥

介绍

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

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

$ /home/shiyanlou/netcheck.sh 22

Packages: 2

目标

完成的脚本必须放置在 /home/shiyanlou/netcheck.sh

脚本执行时需要输入一个端口号作为参数,脚本执行时间为3秒钟

脚本执行后输出一行,统计的是脚本执行3秒钟期间进出该端口的数据包总数量

提示语

tcpdump

知识点

Linux 网络

网络数据统计

端口

实验楼官网已经给了我们提示了:tcpdump,这个是Linux下面的一个抓包工具,以下是tcpdump一些常用的选项:

-i 后跟设备名称 

-c 指定抓包数量,抓够了自动退出

port 指定端口

-nn 直接以IP及port number显示,而非主机名与服务名称

-w 后接文件名,将监听所得的数据包存储下来(二进制存储)

-r 后接文件名(-w存储的文件),将这个文件读取出来

其余选项你可以通过man tcpdump查看

除此之外实验楼还要求我们打印是脚本执行3秒钟期间进出该端口的数据包总数量,这个时候我们需要用到另一个命令timeout命令。

用法:timeout [运行时间] [需要运行的命令]

例如:timeout 3 tcpdump -i eth0 port 22 (表示执行tcpdump这个命令3s)

接下来附上题目的代码如下:

!/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"

转载于小人物博客:www.aizyy.vip

上一篇下一篇

猜你喜欢

热点阅读