gpt4 book ai didi

linux - 如何统计从特定主机收到的数据包数量?

转载 作者:太空宇宙 更新时间:2023-11-04 04:19:59 25 4
gpt4 key购买 nike

我想检查哪个主机向我的服务器发送最多的流量。我怎样才能得到这样的东西:

172 192.168.1.1
19 192.168.1.56

这意味着在特定的时间间隔内,我的服务器收到了来自 192.168.1.1 的 172 个数据包和来自 192.168.1.56 的 19 个数据包。

我该怎么做?

最佳答案

您可以尝试使用 tcpdump 来实现:

#!/bin/sh

while [ 1 ]
do
timeout -t 5 tcpdump -n -i eth0 "tcp port 22" 2> /dev/null > /tmp/capture.txt
echo
date
cat /tmp/capture.txt | grep -oE "((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)[.]){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)" | sort | uniq -c
done

它将通过计算 tcpdump 输出中的 IPv4 地址来生成定期统计信息。

使用pcap过滤器,您可以轻松限制所需的流量。在示例脚本中,“tcp port 22” 限制 SSH 的流量。

示例输出:

Fri Jun 28 16:05:10 UTC 2019
53 10.0.0.2
53 10.0.0.99

Fri Jun 28 16:05:16 UTC 2019
37 10.0.0.2
37 10.0.0.99

Fri Jun 28 16:05:21 UTC 2019

Fri Jun 28 16:05:26 UTC 2019
5 10.0.0.2
5 10.0.0.99

由于tcpdump并非一直运行,计数有时可能会丢失一些数据包。

关于linux - 如何统计从特定主机收到的数据包数量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14100336/

25 4 0
文章推荐: html - 用文本和 <input> 填充
文章推荐: c - 链表结构
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com