代码是坛友发的,检测流量自动关机。。。
我改了几个地方的。
适合在alpine运行
关机我改成 poweroff
后来怕启动不了,
改成 rc-service docker stop
(这个命令只适合在alpine)
但是流量不准,我查询阿里云后台的流量,比脚本测的流量要小很多。估计阿里云是没有计算流入,而脚本计算了。
请大神去掉流入,
我尝试去掉几个 "in" 参数,结果失败。
[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 + 512 * 1024 * 1024)) # 9.5GB 转换为字节的整数表示
# 要监控的网络接口
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 0" > $TRAFFIC_FILE
log_message "流量文件创建成功"
else
saved_month=$(awk '{print $1}' $TRAFFIC_FILE)
if [ "$saved_month" != "$CURRENT_MONTH" ]; then
echo "$CURRENT_MONTH 0 0 0" > $TRAFFIC_FILE
log_message "流量文件月份更新"
fi
fi
# 读取之前的流量记录
read saved_month last_total_in last_total_out last_check_in last_check_out $TRAFFIC_FILE
[/ol]复制代码