我们在使用Vultr的过程中,经常会出现一不小心流量超出配额导致的天价流量费。
虽然Vultr官方有提供了流量预警之后自动关闭机器的功能,但毕竟关闭机器之后,每小时的机器费用还是需要支付的。像我这种喜欢开高配置机器的,每小时的使用费也是一笔不小的开支,因此抽空写了一个自动删除机器的脚本。
本文其实只是写了一个简单的shell脚本,基础功能还是由Vultr官方提供的vultr-cli来实现的。
1、从Vultr官方的github下载vultr-cli
https://github.com/vultr/vultr-cli/releases
2、解压下载的压缩包,把可执行文件复制到 /usr/bin 目录下
tar -xvf vultr-cli_* mv vultr-cli /usr/bin/ rm vultr-cli_*
3、在Vultr后台开启API,并记录下API密钥,同时,将部署Shell的机器IP添加进允许列表(注意:如果机器支持IPv4、IPv6,记得同时添加IPv4和IPv6地址)
Vultr后台:https://my.vultr.com/settings/#settingsapi
4、新建vultr-cli.yaml,将API密钥保存进去(本文将文件保存在/home/vultr-cli.yaml)
api-key: [Vultr后台显示的API密钥]
5、新建vultr.sh,将以下内容粘贴进去(本文将文件保存在/home/vultr.sh)
#!/bin/bash instanceIds=`vultr-cli instance list --config /home/vultr-cli.yaml|grep active|awk '{print $1}'` for instanceId in $instanceIds; do allowBw=`vultr-cli instance get $instanceId --config /home/vultr-cli.yaml|grep BANDWIDTH|awk '{print $3}'` if [[ -z $allowBw ]] then continue fi inComingSum=`vultr-cli instance bandwidth $instanceId --config /home/vultr-cli.yaml|awk '{incoming+=$2} END {print incoming}'` if [[ -z $inComingSum ]] then continue fi outGoingSum=`vultr-cli instance bandwidth $instanceId --config /home/vultr-cli.yaml|awk '{outgoing+=$3} END {print outgoing}'` if [[ -z $outGoingSum ]] then continue fi if [ $inComingSum -gt $outGoingSum ] then let bandwidth=$inComingSum/1024/1024/1024 else let bandwidth=$outGoingSum/1024/1024/1024 fi let bwLeft=$allowBw-$bandwidth let bwSafeLeft=$allowBw*15/100 echo $bwLeft echo $bwSafeLeft if [ $bwLeft -gt $bwSafeLeft ] then echo "bwLeft: $bwLeft, bwSafeLeft: $bwSafeLeft, less 85%!" else echo 'over 85%' vultr-cli instance delete $instanceId --config /home/vultr-cli.yaml echo "bwLeft: $bwLeft, bwSafeLeft: $bwSafeLeft, Deleted!" fi done
6、执行vultr-cli,看下能否请求成功
vultr-cli instance list --config /home/vultr-cli.yaml
7、为vultr.sh添加执行权限
chmod +x /home/vultr.sh
8、将vultr.sh添加进定时任务
执行:crontab -e 在末尾添加一行: * * * * * bash /home/vultr.sh 保存即可
8、撒花完结🎉~
结束语
现在,我们已经完成了脚本的部署。脚本将自动获取Vultr上面的机器并将使用流量超过85%的机器自动销毁。
需要注意的是,该脚本最好不要部署在Vultr的机器上面。(万一自己把自己删了怎么办?)
有的朋友会问,为什么要设置85%的阈值?这是因为Vultr的流量统计有延迟。我在实际使用过程中发现,在流量跑得快的情况下,设定85%删除机器,到实际流量更新后删除机器的时候,已经用了93%。