VPS运维

AWS EC2 & Lightsail 超过预定流量自动关机

2024-5-5 1499字 1,591

安装vnStat

这是个辅助获取网络流量信息的工具。

我用的是Debian12 & Debian10,直接apt install vnstat给装好了。

注意修改一下/etc/vnstat.conf这个配置文件,

加入systemctl后台启动运行。

脚本

简单命名为auto-shutdown.sh,内容如下:

#!/bin/bash

# 定义变量
TRAFFIC_TOTAL_GB=100
BARK_URL="https://api.day.app/xxxxxxxxxx"

# 输出网络接口
NET_INTERFACE=$(ip route | grep default | awk '{print $5}')
echo "网络接口: $NET_INTERFACE"

# 输出总流量限制
echo "总流量限制: $TRAFFIC_TOTAL_GB GB"

# 获取当前年和月
CURRENT_MONTH=$(date +%Y-%m)
echo "当前月份: $CURRENT_MONTH"

# 获取vnstat的输出
OUTPUT=$(vnstat --oneline b | awk -F';' '{print $11}')
echo "vnstat 输出: $OUTPUT"

# 将流量从MiB转换为GB(大致值)
TRAFFIC_USED_GB=$(expr $OUTPUT / 1073741824)
echo "已使用流量(GB)(大致值): $TRAFFIC_USED_GB"

# 判断流量是否超过限制
if awk -v t1="$TRAFFIC_USED_GB" -v t2="$TRAFFIC_TOTAL_GB" 'BEGIN {exit (t1 > t2) ? 0 : 1}'; then
    echo "流量超过 $TRAFFIC_TOTAL_GB GB,正在关机。"
    # 发送bark通知
    curl -s -d "body=总流量: $TRAFFIC_TOTAL_GB GB, 已使用: $TRAFFIC_USED_GB GB, 正在关机。" $BARK_URL
    shutdown -h now
else
    echo "流量在限制范围内。"
fi

执行脚本需要root权限,注意赋予脚本可执行权限。

chmod +x aws-auto-shutdown.sh

设置定时任务设置定时任务

我打算每隔五分钟执行脚本检查一次,所以设置定时任务

apt-get install cron -y
crontab -e

进入后,输入

*/5 * * * * /path/to/auto-shutdown.sh > /dev/null 2>&1

根据自己需要修改路径,保存关闭。

这样任务就安装好了。?

参考

  1. AWS Lightsail超过预定流量自动关机
版权声明:Shire 发表于 2024-5-5
转载请注明: AWS EC2 & Lightsail 超过预定流量自动关机 | Shire

评论