阿里云alpine系统,检测流量达标则关机脚本

查看 17|回复 1
作者:调查员   
   
此脚本是之前坛友发的,
我稍加修改,
使流量检测更准。
(之前的非常不准,我这个脚本,经过我多天检测,跟阿里云后台的流量变动几乎一致)
添加了五分钟后关机的命令。(怕开机后死循环)
建议定时任务,设为10分钟运行一次。
*/10    *       *       *       *       ash /root/aliyun_traffic.sh >/dev/null
(alpine系统,是用ash代替bash)
[ol]#!/bin/bash
# 获取当前脚本的绝对路径
SCRIPT_PATH=$(realpath "$0")
# 保存流量数据的目录和文件
TRAFFIC_DIR="/root/network_traffic"
TRAFFIC_FILE="$TRAFFIC_DIR/network_traffic.dat"
LOG_FILE="$TRAFFIC_DIR/network_traffic_monitor.log"
CURRENT_MONTH=$(date +"%Y-%m")
SHUTDOWN_THRESHOLD=$((19 * 1024 * 1024 * 1024))  # 19GB 转换为字节的整数表示
# 要监控的网络接口
INTERFACE="eth0"
# 创建保存流量数据的目录
if [ ! -d "$TRAFFIC_DIR" ]; then
    mkdir -p "$TRAFFIC_DIR"
    if [ $? -eq 0 ]; then
        echo "目录 $TRAFFIC_DIR 创建成功"
    else
        echo "无法创建目录 $TRAFFIC_DIR"
        exit 1
    fi
fi
# 定义日志记录函数
log_message() {
    local message="$1"
    echo "$(date +"%Y-%m-%d %H:%M:%S") - $message" >> $LOG_FILE
}
# 初始化日志文件
if [ ! -f $LOG_FILE ]; then
    touch $LOG_FILE
    log_message "日志文件创建成功"
fi
# 如果流量文件不存在或者月份不同,则创建并初始化
if [ ! -f $TRAFFIC_FILE ]; then
    echo "$CURRENT_MONTH 0 0" > $TRAFFIC_FILE
    log_message "流量文件创建成功"
else
    saved_month=$(awk '{print $1}' $TRAFFIC_FILE)
    if [ "$saved_month" != "$CURRENT_MONTH" ]; then
        echo "$CURRENT_MONTH 0 0" > $TRAFFIC_FILE
# 月初先删除日志,再重建日志文件
        rm $LOG_FILE
        touch $LOG_FILE
        log_message "流量文件月份更新"
    fi
fi
# 读取之前的流量记录
read saved_month  last_total_out last_check_out  $TRAFFIC_FILE
[/ol]复制代码

流量, 文件, 脚本

种植业生产人员   
牛逼
您需要登录后才可以回帖 登录 | 立即注册

返回顶部