首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >计算特定网络接口上的传入数据包

计算特定网络接口上的传入数据包
EN

Stack Overflow用户
提问于 2015-12-11 20:24:13
回答 3查看 1.8K关注 0票数 3

我想在特定的时间内(直到执行脚本后5分钟)计算网络接口(例如eth0)上的传入数据包的数量,如何通过shell或python脚本进行计算?哪一个更准确?

我知道iptraf这样的网络工具,但我希望通过脚本完成,最好将计数值打印到屏幕上或文件中。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-12-11 21:28:11

如果您使用的是linux,则可以使用tcpdump完成工作。shell中使用的大多数命令都是在大多数linux发行版中预先安装的。

代码语言:javascript
复制
#!/bin/sh
# # # Run this as sudo
# # # Pass an argument of your IP address
# # $ Usage: sudo ./<nameOfTheScript> <IPofYourMachine>
# Parameters
captureTime=300


# Capture packets for X Seconds
tcpdump -i eth0 dst host $1 >> /dev/null 2> out &
pid=$!
sleep $captureTime
kill $pid

# Extract relevant data
cat out | tail -2 | head -1 | cut -d " " -f 1

# Cleaning up!
rm out

shell运行tcpdump的时间为300秒,并终止它。tcpdump将所需的数据输出到stderr。这就是将该流重定向到文件(2> out)的原因。shell的最后一秒命令从从tcpdump抛出的完整消息中提取我们想要的数据。它需要以sudo的形式运行!另外,不要忘记根据需要修改侦听接口。

如果还不清楚我为什么这么做,请告诉我!

票数 2
EN

Stack Overflow用户

发布于 2015-12-11 21:18:37

查看一下https://github.com/dugsong/pypcap,它使用libpcap,看起来它支持linux/win/mac

代码语言:javascript
复制
>>> import pcap
>>> for ts, pkt in pcap.pcap():
...     print ts, `pkt`

有人在这里发布了一个较长的示例脚本:http://pylibpcap.sourceforge.net

票数 2
EN

Stack Overflow用户

发布于 2015-12-11 22:28:47

如果您正在使用Linux,可以使用/sys/class/net/INTERFACE/statistics/rx_packets (我不知道BSD,.(核)

capture.sh接口time_in_seconds

代码语言:javascript
复制
#!/bin/sh
pcksFile="/sys/class/net/$1/statistics/rx_packets"
nbPcks=`cat $pcksFile`
sleep $2
echo $(expr `cat $pcksFile` - $nbPcks)

产出:

代码语言:javascript
复制
$ ./capture.sh eth0 2
7
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34231968

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档