vps交流

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


  1. #!/usr/bin/env bash
  2. # This script is called on SSH login by /etc/profile.d/sshd_telegram.sh
  3. # Modified from https://github.com/MyTheValentinus/ssh-login-alert-telegram
  4. # Your USERID or Channel ID to display alert and key, we recommend you create new bot with @BotFather on Telegram
  5. #你要修改的都在这里USERID,KEY,VPSNAME,PFTIME,LIMIT,LIMIT2
  6. #========================================================
  7. USERID=(这里也要改电报机器人id)
  8. KEY="填电报机器人key"
  9. # 设置机器名字
  10. VPSNAME="ali-hk1"
  11. # 设置流量限制(单位:GB)
  12. LIMIT=150
  13. LIMIT2=160
  14. # 设置间隔时间(单位:秒)
  15. PFTIME=1800
  16. #=========================================================
  17. for i in "${USERID[@]}"
  18. do
  19. URL="https://api.telegram.org/bot${KEY}/sendMessage"
  20. DATE="$(date "+%Y-%m-%d %H:%M:%S")"
  21. # 设置网卡名称
  22. INTERFACE="eth0"
  23. SRV_HOSTNAME=$(hostname -f)
  24. # 获取当前流量(单位:KB)====================================
  25. VNSTAT_JSON=$(vnstat -i $INTERFACE –json)
  26. # 使用 jq 解析 JSON 数据获取接收和发送的流量(单位:KB)
  27. RX=$(echo $VNSTAT_JSON | jq -r ‘.interfaces[0].traffic.total.rx’)
  28. TX=$(echo $VNSTAT_JSON | jq -r ‘.interfaces[0].traffic.total.tx’)
  29. # 检查 RX 和 TX 是否为有效的数字
  30. if ! [[ $RX =~ ^[0-9]+$ ]] || ! [[ $TX =~ ^[0-9]+$ ]]; then
  31.     exit 1
  32. fi
  33. # 计算总流量(单位:GB)
  34. TOTAL=$(echo "scale=2; ($RX + $TX) / 1024 / 1024" | bc)
  35. RX_GB=$(echo "scale=2; $RX / 1024 / 1024" | bc)
  36. TX_GB=$(echo "scale=2; $TX / 1024 / 1024" | bc)
  37. # 获取上次运行时间==========================================================
  38. # 当前时间(秒)
  39. current_time=$(date +%s)
  40. # 默认上次执行时间为很久之前(这样首次运行时会执行else分支)
  41. last_exec_time=0
  42. # 时间戳文件路径
  43. timestamp_file="/usr/unitls/else_exec_time.txt"
  44. # 检查时间戳文件是否存在
  45. if [ -f "$timestamp_file" ]; then
  46.     # 读取上次执行时间
  47.     last_exec_time=$(cat "$timestamp_file")
  48. else
  49.     touch /usr/unitls/else_exec_time.txt
  50.     echo "else_exec_time.txt 文件已经创建."  # 可选:输出提示信息
  51. fi
  52. # 计算时间差值
  53. time_diff=$((current_time – last_exec_time))
  54. #判断执行语句==============================================================
  55. if (( $(echo "$RX_GB >= $LIMIT2" | bc -l) )) || (( $(echo "$TX_GB >= $LIMIT2" | bc -l) )); then
  56.        
  57.         TEXT="${VPSNAME}(${SRV_HOSTNAME})当前流量使用情况:
  58.         入流量(接受流量): *${RX_GB}*
  59.         出流量(发送流量): *${TX_GB}*
  60.     时间: ${DATE}
  61.     其已超过160GB,已执行关机操作"
  62.         curl -s -d "chat_id=$i&text=${TEXT}&disable_web_page_preview=true&parse_mode=markdown" $URL > /dev/null
  63.    
  64.     sudo shutdown -h now
  65. elif (( $(echo "$RX_GB >= $LIMIT" | bc -l) )) || (( $(echo "$TX_GB >= $LIMIT" | bc -l) )); then
  66.        
  67.         TEXT="${VPSNAME}(${SRV_HOSTNAME})当前流量使用情况:
  68.         入流量(接受流量): *${RX_GB}*
  69.         出流量(发送流量): *${TX_GB}*
  70.     时间: ${DATE}
  71.     其已超过150GB,超过160GB将执行关机操作"
  72.         curl -s -d "chat_id=$i&text=${TEXT}&disable_web_page_preview=true&parse_mode=markdown" $URL > /dev/null
  73. else
  74.     if (( time_diff >= PFTIME )); then
  75.      # 记录操作时间
  76.     echo "$current_time" > "$timestamp_file"
  77.     TEXT="${VPSNAME}(${SRV_HOSTNAME})当前流量使用情况:
  78.         入流量(接受流量): *${RX_GB}*
  79.         出流量(发送流量): *${TX_GB}*
  80.     时间: ${DATE}
  81.     正常使用暂未超过150GB"
  82.         curl -s -d "chat_id=$i&text=${TEXT}&disable_web_page_preview=true&parse_mode=markdown" $URL > /dev/null
  83.     fi   
  84. fi
  85. done

复制代码

出入流量中的一个超过160就会关机并且给电报机器人发送通知。脚本每分钟执行一次。每次执行都会判定出入流量是否超标,没有超标的话,每30分钟向电报机器人发送截止当前时刻的出入流量。
前提是安装vnstat 和 jq  和bc。
vnstat修改了设置每分钟记录一次

给老哥点个赞
原贴是什么
赞(0)
版权声明:本贴采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
帖子名称:《[美国VPS] 3年阿里云白**的那个脚本,在mjj的基础上完善了一下》
帖子链接:https://bbs.toot.su/186389.html

相关推荐