#教程# – VPS限定时间内超流量自动关机脚本

前言

我们在购买国外 VPS 的时候都有流量限制,如果超过月流量就只能停机了,这里博主给出个限定时间内超出站流量自动关机脚本,以防止刷流量导致主机商停机。

图片[1] - #教程# – 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,脚本会输出一条警告信息并自动关机。否则,脚本会输出一条正常信息并继续等待下一次检测。

© 本站文章随意转载,但请注明出处!
THE END
点赞11 分享
评论 抢沙发
头像
务必使用真实的邮箱地址评论,虚假邮箱的评论将不通过审核及无回复。
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容