AWS亚马逊云免费主机Lightsail流量超出自动关机脚本

AWS亚马逊云|免费主机

Lightsail流量用尽后自动关机脚本

Lightsail 根据价位不同,包含了各种各样的流量套餐,比如最便宜的 $3.5 套餐只有 1T 双向流量。和国内收费习惯不同,AWS 在你流量用完后依然提供服务,超出的流量费会在月底给你账单!也就是说万一被恶意刷流量,你有可能倾家荡产(网上也有网友说可以找 AWS 申请免除账单),所以为了自己的钱包着想,我还是选择超出套餐流量自动关机。

aws免费云主机以debian为例
注: AWS 是双向计流量

1. 安装依赖

输入以下命令安装 vnstatbc

1
2
sudo apt update
sudo apt install vnstat bc -y

2. 查看网卡名称

运行以下命令查看网卡名称:

1
ip link

输出类似如下:

1
2
3
4
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: ens5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc mq state UP mode DEFAULT group default qlen 1000
link/ether 02:ab:cd:ef:12:34 brd ff:ff:ff:ff:ff:ff
  • 记下 ens5(或其他类似名称),这是你的网卡名称。

3. 修改 vnstat 配置

运行以下命令编辑 vnstat 配置文件:

1
sudo nano /etc/vnstat.conf
  • 找到以下配置项并按需求修改:
1
2
3
4
5

Interface "ens5" # 将 "ens5" 替换为你的网卡名称
UnitMode 1 # 使用 GB 为单位
MonthRotate 1 # 每月从 1 号开始计算流量
保存并退出:按 Ctrl+O,回车保存,再按 Ctrl+X 退出。

4. 重启 vnstat

输入以下命令使配置生效:

1
sudo systemctl restart vnstat

5. 创建自动关机脚本

创建名为 check.sh 的脚本文件:

1
nano /home/admin/check.sh
  • 将以下内容复制粘贴进去,确保将 interface_name 的值改为你的网卡名称(如 ens5),并根据需求设置 traffic_limit:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#!/bin/bash
# 网卡名称
interface_name="ens5"
# 流量阈值上限
traffic_limit=1700
# 更新网卡记录
vnstat -i "$interface_name"
# 获取每月用量 $11:进站+出站;$10是:出站;$9是:进站
ax=`vnstat --oneline | awk -F ";" '{print $11}'`
# 如果每月用量单位是GB则进入
if [[ "$ax" == *GB* ]]; then
# 每月实际流量数除以流量阈值,大于或等于1,则执行关机命令
if [ $(echo "$(echo "$ax" | sed 's/ GB//g') / $traffic_limit"|bc) -ge 1 ];
then
sudo /usr/sbin/shutdown -h now
fi
fi

保存并退出:按 Ctrl+O,回车保存,再按 Ctrl+X 退出。

6. 授予执行权限

运行以下命令让脚本可以被执行:

1
chmod +x /home/admin/check.sh

7. 设置定时任务

打开 crontab 编辑器:

1
crontab -e

在文件末尾添加以下内容:

1
*/5 * * * * /bin/bash /home/admin/check.sh > /tmp/cron_shutdown_debug.log 2>&1
  • 这表示每 5 分钟执行一次检查脚本。

保存并退出:按 Ctrl+O,回车保存,再按 Ctrl+X 退出。

验证配置

运行 vnstat 检查流量统计是否正常:

1
vnstat
  • 确保 check.sh 执行无报错:
1
/bin/bash /home/admin/check.sh

如果没有语法错误看到的如下
Database updated: 2024-12-01 19:06:20

ens5 since 2024-12-01

      rx:  5.66 MiB      tx:  9.52 MiB      total:  15.18 MiB

monthly
rx | tx | total | avg. rate
————————+————-+————-+—————
2024-12 5.66 MiB | 9.52 MiB | 15.18 MiB | 95.96 kbit/s
————————+————-+————-+—————
estimated 10.88 GiB | 18.29 GiB | 29.17 GiB |

daily
rx | tx | total | avg. rate
————————+————-+————-+—————
today 5.66 MiB | 9.52 MiB | 15.18 MiB | 95.96 kbit/s
————————+————-+————-+—————
estimated 7.11 MiB | 11.96 MiB | 19.07 MiB |


  • 查看定时任务日志:
1
cat /tmp/cron_shutdown_debug.log

配置完成后,服务器会每 5 分钟检查一次流量是否超限,超限即自动关机。

大功告成