用于监控特定网络接口的数据使用情况,并在数据使用量超过用户定义的阈值时记录到日志文件中。
Bash 脚本
#!/bin/bash
# 检查是否提供了必要的参数
if [ "$#" -ne 2 ]; then
echo "用法:$0 网络接口 数据阈值(MB)"
echo "示例:$0 eth0 500"
exit 1
fi
# 获取参数
interface=$1
threshold=$(($2 * 1024 * 1024)) # 将 MB 转换为字节进行比较
# 日志文件名
log_file="exceeded_network_usage.log"
# 定义检查数据使用量并记录超额使用的函数
verify_usage() {
# 获取当前月份的总接收和发送字节数
usage=$(vnstat -i "$interface" --oneline | cut -d ';' -f 3,4 | tr ';' '+' | bc)
if [ "$usage" -gt "$threshold" ]; then
# 记录超额使用情况
echo "$(date +"%Y-%m-%d %H:%M:%S"): $interface 接口数据使用量过高 - ${usage} 字节超过 ${threshold} 字节的阈值" >> "$log_file"
echo "警告:记录到数据使用量过高。"
else
echo "数据使用量在设定限制范围内。"
fi
}
# 每 10 分钟监控一次网络使用情况
while true; do
verify_usage
sleep 600
done
使用说明
确保安装了 vnstat 工具:vnstat 是一个用于监控网络流量的工具,必须安装在系统上才能使用此脚本。如果未安装,可以使用系统包管理器进行安装,例如在 Debian/Ubuntu 系统上:
sudo apt-get install vnstat
保存脚本到文件:将脚本内容保存到一个文件中,例如 monitor_network.sh。
给文件添加执行权限:
chmod +x monitor_network.sh
运行脚本:提供网络接口和数据阈值(以 MB 为单位)作为参数运行脚本。例如:
./monitor_network.sh eth0 500
该命令会监控 eth0 接口,如果数据使用量超过 500 MB,脚本会记录到日志文件中。
注意事项
- 脚本中使用了 vnstat 的 --oneline 选项来获取网络接口的流量数据。确保 vnstat 已正确配置并收集了流量数据。
- 数据阈值单位为 MB,脚本将其转换为字节(MB * 1024 * 1024)以便与 vnstat 的输出进行比较。
- 日志文件 exceeded_network_usage.log 会记录每次数据使用量超过阈值的情况,包括时间戳和接口名称。
- 脚本会每 10 分钟检查一次网络使用情况,可以通过修改 sleep 600 的时间来调整检查频率。