设为首页
收藏本站
切换到宽版
用户名
Email
自动登录
找回密码
密码
登录
注册
快捷导航
论坛
BBS
排行榜
Ranklist
搜索
搜索
热搜:
香港vps
香港VPS
amh
机柜
vps
分销
VPS
域名出售
火车头
云主机
不限流量
香港服务器
美国服务器
香港
全能空间
whmcs
digitalocean
本版
帖子
用户
MJJ论坛
»
论坛
›
主机综合交流
›
美国VPS综合讨论
›
3年阿里云白**的那个脚本,在mjj的基础上完善了一下 ...
返回列表
查看:
963
|
回复:
3
[美国VPS]
3年阿里云白**的那个脚本,在mjj的基础上完善了一下
[复制链接]
bayu
bayu
当前离线
积分
187
发表于 2024-8-1 17:46:18
|
显示全部楼层
|
阅读模式
#!/usr/bin/env bash
# This script is called on SSH login by /etc/profile.d/sshd_telegram.sh
# Modified from https://github.com/MyTheValentinus/ssh-login-alert-telegram
# Your USERID or Channel ID to display alert and key, we recommend you create new bot with @BotFather on Telegram
#你要修改的都在这里USERID,KEY,VPSNAME,PFTIME,LIMIT,LIMIT2
#========================================================
USERID=(这里也要改电报机器人id)
KEY="填电报机器人key"
# 设置机器名字
VPSNAME="ali-hk1"
# 设置流量限制(单位:GB)
LIMIT=150
LIMIT2=160
# 设置间隔时间(单位:秒)
PFTIME=1800
#=========================================================
for i in "${USERID[@]}"
do
URL="https://api.telegram.org/bot${KEY}/sendMessage"
DATE="$(date "+%Y-%m-%d %H:%M:%S")"
# 设置网卡名称
INTERFACE="eth0"
SRV_HOSTNAME=$(hostname -f)
# 获取当前流量(单位:KB)====================================
VNSTAT_JSON=$(vnstat -i $INTERFACE --json)
# 使用 jq 解析 JSON 数据获取接收和发送的流量(单位:KB)
RX=$(echo $VNSTAT_JSON | jq -r '.interfaces[0].traffic.total.rx')
TX=$(echo $VNSTAT_JSON | jq -r '.interfaces[0].traffic.total.tx')
# 检查 RX 和 TX 是否为有效的数字
if ! [[ $RX =~ ^[0-9]+$ ]] || ! [[ $TX =~ ^[0-9]+$ ]]; then
exit 1
fi
# 计算总流量(单位:GB)
TOTAL=$(echo "scale=2; ($RX + $TX) / 1024 / 1024" | bc)
RX_GB=$(echo "scale=2; $RX / 1024 / 1024" | bc)
TX_GB=$(echo "scale=2; $TX / 1024 / 1024" | bc)
# 获取上次运行时间==========================================================
# 当前时间(秒)
current_time=$(date +%s)
# 默认上次执行时间为很久之前(这样首次运行时会执行else分支)
last_exec_time=0
# 时间戳文件路径
timestamp_file="/usr/unitls/else_exec_time.txt"
# 检查时间戳文件是否存在
if [ -f "$timestamp_file" ]; then
# 读取上次执行时间
last_exec_time=$(cat "$timestamp_file")
else
touch /usr/unitls/else_exec_time.txt
echo "else_exec_time.txt 文件已经创建." # 可选:输出提示信息
fi
# 计算时间差值
time_diff=$((current_time - last_exec_time))
#判断执行语句==============================================================
if (( $(echo "$RX_GB >= $LIMIT2" | bc -l) )) || (( $(echo "$TX_GB >= $LIMIT2" | bc -l) )); then
TEXT="${VPSNAME}(${SRV_HOSTNAME})当前流量使用情况:
入流量(接受流量): *${RX_GB}*
出流量(发送流量): *${TX_GB}*
时间: ${DATE}
其已超过160GB,已执行关机操作"
curl -s -d "chat_id=$i&text=${TEXT}&disable_web_page_preview=true&parse_mode=markdown" $URL > /dev/null
sudo shutdown -h now
elif (( $(echo "$RX_GB >= $LIMIT" | bc -l) )) || (( $(echo "$TX_GB >= $LIMIT" | bc -l) )); then
TEXT="${VPSNAME}(${SRV_HOSTNAME})当前流量使用情况:
入流量(接受流量): *${RX_GB}*
出流量(发送流量): *${TX_GB}*
时间: ${DATE}
其已超过150GB,超过160GB将执行关机操作"
curl -s -d "chat_id=$i&text=${TEXT}&disable_web_page_preview=true&parse_mode=markdown" $URL > /dev/null
else
if (( time_diff >= PFTIME )); then
# 记录操作时间
echo "$current_time" > "$timestamp_file"
TEXT="${VPSNAME}(${SRV_HOSTNAME})当前流量使用情况:
入流量(接受流量): *${RX_GB}*
出流量(发送流量): *${TX_GB}*
时间: ${DATE}
正常使用暂未超过150GB"
curl -s -d "chat_id=$i&text=${TEXT}&disable_web_page_preview=true&parse_mode=markdown" $URL > /dev/null
fi
fi
done
复制代码
出入流量中的一个超过160就会关机并且给电报机器人发送通知。脚本每分钟执行一次。每次执行都会判定出入流量是否超标,没有超标的话,每30分钟向电报机器人发送截止当前时刻的出入流量。
前提是安装vnstat 和 jq 和bc。
vnstat修改了设置每分钟记录一次
回复
举报
榆榆不可及
榆榆不可及
当前离线
积分
15461
发表于 2024-8-1 17:49:04
|
显示全部楼层
给老哥点个赞
回复
支持
反对
举报
etc小号
etc小号
当前离线
积分
3780
发表于 2024-8-1 17:54:56
来自手机
|
显示全部楼层
原贴是什么
回复
支持
反对
举报
solo1
solo1
当前离线
积分
3710
发表于 2024-8-2 09:01:01
|
显示全部楼层
原贴是什么
回复
支持
反对
举报
返回列表
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
注册
本版积分规则
发表回复
回帖后跳转到最后一页
浏览过的版块
Offers专区
Archiver
|
手机版
|
小黑屋
|
MJJ论坛
Copyright
MJJ论坛
© 2022 All Rights Reserved.
快速回复
返回顶部
返回列表