shell脚本使用iftop统计外网内外流量,不统计私网内外流量
iftop
是一个实时显示网络连接带宽使用情况的工具。它可以帮助你监控网络流量,但它本身并不直接支持过滤特定的IP地址范围(如私网地址)。不过,你可以结合其他工具和脚本来实现这个功能。
以下是一个示例脚本,展示如何使用 iftop
和 grep
等工具来统计外网流量,并排除私网流量:
#!/bin/bash
# 定义私网IP地址范围
PRIVATE_IP_RANGES=(
"10.0.0.0/8"
"172.16.0.0/12"
"192.168.0.0/16"
)
# 运行 iftop 并将输出重定向到一个临时文件
sudo iftop -n -t -s 10 > /tmp/iftop_output.txt
# 过滤掉私网IP地址
for range in "${PRIVATE_IP_RANGES[@]}"; do
grep -v -E "$range" /tmp/iftop_output.txt > /tmp/iftop_filtered.txt
mv /tmp/iftop_filtered.txt /tmp/iftop_output.txt
done
# 显示过滤后的结果
cat /tmp/iftop_output.txt
# 清理临时文件
rm /tmp/iftop_output.txt
这个脚本的工作原理如下:
iftop
并将其输出重定向到一个临时文件。这里使用了 -n
选项来避免DNS解析,-t
选项来使输出适合脚本处理,-s 10
选项来指定运行时间为10秒。grep
过滤掉私网IP地址范围的行。请注意,这个脚本只是一个简单的示例,可能需要根据你的具体需求进行调整。特别是,grep
的正则表达式可能需要根据实际情况进行调整,以确保正确过滤私网IP地址。