前言
我们在购买国外 VPS 的时候都有流量限制,如果超过月流量就只能停机了,这里博主给出个限定时间内超出站流量自动关机脚本,以防止刷流量导致主机商停机。
教程说明
下面的代码保存为network_monitor.sh
#!/bin/bash
# 指定要监视的网卡名称
INTERFACE="eth0"
# 获取当前时间戳(以秒为单位)
CURRENT_TIME=$(date +%s)
# 计算 10 分钟前的时间戳(以秒为单位)
TEN_MINUTES_AGO=$(date -d "10 minutes ago" +%s)
# 获取 10 分钟内指定网卡的出站流量(以字节为单位)
OUTGOING=$(cat /sys/class/net/$INTERFACE/statistics/tx_bytes)
# 将出站流量转换为 GB,并保留三位小数
OUTGOING_GB=$(printf "%.3f" $(echo "scale=3; $OUTGOING / 1024 / 1024 / 1024" | bc))
# 设置阈值(以 GB 为单位)
THRESHOLD=20
# 检查 10 分钟内出站流量是否超过阈值
if (( $(echo "$OUTGOING_GB > $THRESHOLD" | bc -l) )); then
echo "[$INTERFACE] 过去 10 分钟内的出站流量为: $OUTGOING_GB GB,超过 $THRESHOLD GB!执行关机命令..."
# 执行关机命令
/usr/sbin/shutdown -h now
else
echo "[$INTERFACE] 过去 10 分钟内的出站流量为: $OUTGOING_GB GB,未超过 $THRESHOLD GB。"
fi
将其设置为可执行文件
chmod +x network_monitor.sh
使用cron 计划任务在每十分钟执行一次该脚本,运行crontab -e
命令编辑cron文件,或者直接修改/var/spool/cron/root
文件,添加以下行:
*/10 * * * * /root/network_monitor.sh >> /home/wwwlogs/oult.log
请确保将/root/network_monitor.sh
替换为实际脚本文件的路径,输出日志文件为oult.log
。报错的话请安装 bc 浮点运算:
yum install bc -y
如日志出现/root/aws_network_monitor.sh: line 22: shutdown: command not found
,查看shutdown
位置
whereis shutdown
shutdown: /usr/sbin/shutdown /usr/share/man/man8/shutdown.8.gz
把脚本关机路径改为:
# 在这里执行关机命令,例如:
/usr/sbin/shutdown -h now
结语
当cron触发时(每十分钟一次),脚本就会检测网卡的出站流量。如果流量超过 100G,脚本会输出一条警告信息并自动关机。否则,脚本会输出一条正常信息并继续等待下一次检测。
© 本站文章随意转载,但请注明出处!
>> 如果您觉得本站文章对您有所帮助,购买 VPS 时候请走本站AFF链接!
>> 某些文章具有时效性,若内容有错误或已失效,欢迎在下方评论区留言向我们反馈.
>> 所有文章均基于分享的原则,所有言论均个人观点,请注意全部都不是推荐,是分享!分享!分享!
>> 所有文章均基于分享的原则,所有言论均个人观点,请注意全部都不是推荐,是分享!分享!分享!
THE END
暂无评论内容