找回密码
 立即注册
CeraNetworksBGVM服务器主机交流会员请立即修改密码Sharktech防护
查看: 30|回复: 2

3年阿里云白**的那个脚本,在mjj的基础上完善了一下

[复制链接]

2

主题

8

回帖

34

积分

新手上路

积分
34
发表于 2024-8-1 17:46:18 | 显示全部楼层 |阅读模式
[ol]
  • #!/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
  • [/ol]复制代码
    出入流量中的一个超过160就会关机并且给电报机器人发送通知。脚本每分钟执行一次。每次执行都会判定出入流量是否超标,没有超标的话,每30分钟向电报机器人发送截止当前时刻的出入流量。
    前提是安装vnstat 和 jq  和bc。
    vnstat修改了设置每分钟记录一次
  • 回复

    使用道具 举报

    12

    主题

    407

    回帖

    1250

    积分

    金牌会员

    积分
    1250
    发表于 2024-8-1 17:49:04 | 显示全部楼层
    给老哥点个赞
    回复

    使用道具 举报

    209

    主题

    637

    回帖

    3111

    积分

    论坛元老

    积分
    3111
    发表于 2024-8-1 17:54:56 | 显示全部楼层
    原贴是什么
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    Archiver|手机版|小黑屋|HS2V主机综合交流论坛

    GMT+8, 2024-11-8 08:50 , Processed in 0.410969 second(s), 2 queries , Gzip On, Redis On.

    Powered by Discuz! X3.5 |   访问量:   |   访客量:  

    © 2001-2024 Discuz! Team. |   今日访问量:    |   今日访客量:  

    快速回复 返回顶部 返回列表