跳至内容

服务器配置流量用完时关机

发布日期:
作者:
评论数:暂无评论

amazon lightsail, vultr, linode等等服务商的流量用完后并不会关机,超出计划数据传输限额的流量会继续扣费,每家的价格也不一样。如果你不想为意外超出流量付费,那么可以配置流量快用完时自动关机。

下面是配置的方法,仅适用于服务器操作系统是Debian系的Linux发行版。

安装vnstat和bc

sudo apt update
sudo apt install vnstat bc

必须安装bc(基础计算器),因为bash无法直接处理浮点数比较。

查看状态:

sudo systemctl status vnstat

如果没启动:

sudo systemctl enable vnstat
sudo systemctl start vnstat

创建脚本文件:

sudo vi /home/admin/traffic_watch.sh
#!/bin/bash

# 1. 设置阈值:比如 950GB (假如月流量是1TB,留 50G 余量。)
LIMIT_GB=950

# 2. 获取本月总流量 (字节单位)
# --oneline 模式下:第11列是本月总流量(字节)
# 我们强制使用 -b (bytes) 参数确保输出的是纯数字字节
USAGE_BYTES=$(vnstat --oneline b | cut -d';' -f11)

# 3. 计算当前的 GB 数 (使用 bc 处理浮点数)
# 1024^3 = 1073741824
USAGE_GB=$(echo "scale=2; $USAGE_BYTES / 1073741824" | bc)

# 4. 比较并执行关机
# bc 返回 1 表示为真
if [ "$(echo "$USAGE_GB > $LIMIT_GB" | bc)" -eq 1 ]; then
    echo "流量已超标: $USAGE_GB GB,系统正在关机..."
    # 记录到系统日志,方便日后查看
    logger "Traffic limit exceeded ($USAGE_GB GB). Shutting down."
    /sbin/shutdown -h now
fi

流量阈值根据自己的月度数据传输配额来设置。如果是amazon lightsail, 数据传输限额范围内,出入站流量都会计算进去,所以获取的是vnstat –online的第11列,使用了 -f11 ,如果你的服务器厂家只计算出站数据,则 -f11 改成 -f10

赋予脚本执行权限

sudo chmod +x /home/admin/traffic_watch.sh

添加到定时任务

安装cron(一般自带了,如果没有自带,需要安装)

sudo apt install cron

让它每5分钟自动检查一次

sudo crontab -e

添加

*/5 * * * * /bin/bash /home/admin/traffic_watch.sh

查看自动关机日志:

sudo journalctl | grep "Traffic limit exceeded"

查看接口

vnstat --iflist

查看流量

将enp1s0替换成自己的网卡。

vnstat -i enp1s0

或:

vnstat -d
vnstat -m

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注