admin 发表于 2024-8-1 18:37:13

完善了MJJ的阿里云3年白嫖脚本

```bash
#!/usr/bin/env bash
# This script alerts on SSH login via /etc/profile.d/sshd_telegram.sh and monitors bandwidth usage.
# Adapted from: https://github.com/MyTheValentinus/ssh-login-alert-telegram
# Define your USERID (Telegram chat ID), KEY (Telegram bot API key), VPSNAME (server name), PFTIME (interval in seconds), LIMIT and LIMIT2 (bandwidth thresholds in GB).
USERID="Your_Telegram_ID_here"
KEY="Your_Bot_Key_Here"
VPSNAME="ali-hk1"
LIMIT=150
LIMIT2=160
PFTIME=1800
# Loop through USERIDs
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)
    # Fetch current traffic data in KB
    VNSTAT_JSON=$(vnstat -i $INTERFACE --json)
    RX=$(echo $VNSTAT_JSON | jq -r '.interfaces.traffic.total.rx')
    TX=$(echo $VNSTAT_JSON | jq -r '.interfaces.traffic.total.tx')
    # Ensure RX and TX are valid numbers
    if ! [[ $RX =~ ^+$ ]] || ! [[ $TX =~ ^+$ ]]; then
      exit 1
    fi
    # Calculate total traffic in 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)
    # Timestamp management
    current_time=$(date +%s)
    timestamp_file="/usr/unitls/last_exec_time.txt"
   
    if [ -f "$timestamp_file" ]; then
      last_exec_time=$(cat "$timestamp_file")
    else
      touch $timestamp_file
      echo "Timestamp file created."
    fi
    time_diff=$((current_time - last_exec_time))
    # Check and act based on traffic
    if (( $(echo "$RX_GB >= $LIMIT2" | bc -l) )) || (( $(echo "$TX_GB >= $LIMIT2" | bc -l) )); then
      TEXT="${VPSNAME}(${SRV_HOSTNAME}) Traffic Usage:\nInbound: *$RX_GB*\nOutbound: *$TX_GB*\nTime: $DATE\nExceeded 160GB, shutting down."
      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}) Traffic Usage:\nInbound: *$RX_GB*\nOutbound: *$TX_GB*\nTime: $DATE\nExceeded 150GB, nearing 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}) Traffic Usage:\nInbound: *$RX_GB*\nOutbound: *$TX_GB*\nTime: $DATE\nUsage within limits."
            curl -s -d "chat_id=$i&text=$TEXT&disable_web_page_preview=true&parse_mode=markdown" $URL > /dev/null
      fi
    fi
done
# The system will shut down if either inbound or outbound traffic exceeds 160GB, sending a notification to the Telegram bot. The script runs every minute, checking for overages and sending updates every 30 minutes if no overage has occurred.
# Dependencies: vnstat, jq, and bc must be installed. vnstat is configured to record data every minute.
```
页: [1]
查看完整版本: 完善了MJJ的阿里云3年白嫖脚本