VPS常用命令
新装VPS必用命令
root用户密码登录
root用户密钥登录
VPS重装系统脚本
Oracle DD系统后获取ipv6地址
V2ray安装
x-ui安装
PVE实用命令
speedtest-cli
OpenWrt接口配置示例
利用Cloudflare Tunnel实现内网穿透
ubuntu通过netplan设置静态ip
PVE温度显示以及去除弹窗脚本
Caddy示例配置文件
hysteria2的搭建与使用
Clash Meta配置模板
VPS流量监控脚本
rclone完全备份脚本
Oracle Cloud安装Alpine Linux
Caddy-dns的配置与使用
sing-box安装与配置
通过 CF Warp 为 IPv4/6 Only VPS 添加 IPv6/4 支持
流量转发脚本
ssh配置文件
rsync传输文件
阿里云盘CLi安装
Linux 设置IPv4优先
流量监控脚本
Openwrt中使用ddns-go加Caddy实现域名访问
NAT VPS 使用 Caddy 为内部服务提供 HTTPS 访问
Docker 多平台镜像构建与推送教程(arm64 主机示例)
本文档使用 MrDoc 发布
-
+
首页
流量监控脚本
### 安装依赖 ```bash apt install vnstat jq -y ``` 启动并自启 ```bash sudo systemctl start vnstat sudo systemctl enable vnstat ``` ### 脚本vim traffic_limiter.sh ```bash #!/bin/bash # --- 用户配置 --- # 你的主网卡名称 INTERFACE="ens3" # 每月总流量限额 (单位: GiB) # 例如,设置为 4000 GiB (约等于 4TB) THRESHOLD_GIB=4000 # 限速值 (tc 使用的单位,例如 mbit) # 5 MB/s = 40 Mbit/s LIMIT_RATE="40mbit" # --- 配置结束 --- # 脚本状态文件,用于判断当前是否已经限速 STATUS_FILE="/tmp/traffic_limit_status" # 将 GiB 阈值转换为 KiB,因为 vnstat 的 JSON 输出单位是 KiB THRESHOLD_KIB=$(echo "$THRESHOLD_GIB * 1024 * 1024" | bc) # 从 vnstat 获取本月的总流量 (上行 + 下行),单位是 KiB # --json m 1 表示获取最近一个月的 JSON 格式数据 # jq 用来解析 JSON,找到对应网卡的总流量 # 注意:如果服务器上有多个网卡,jq 的查询可能需要微调 CURRENT_KIB=$(vnstat --json m 1 | jq ".interfaces[] | select(.name == \"$INTERFACE\") | (.traffic.total.rx + .traffic.total.tx)") # 检查是否成功获取流量数据 if [ -z "$CURRENT_KIB" ]; then echo "无法从 vnstat 获取网卡 $INTERFACE 的流量数据,退出脚本。" exit 1 fi echo "当前流量: $CURRENT_KIB KiB" echo "流量阈值: $THRESHOLD_KIB KiB" # 比较当前流量和阈值 if (( $(echo "$CURRENT_KIB > $THRESHOLD_KIB" | bc -l) )); then # 流量已超额 echo "流量已超额,准备施加限速。" if [ ! -f "$STATUS_FILE" ]; then echo "当前未限速,开始应用限速规则..." # 应用 tc 限速规则 tc qdisc add dev $INTERFACE root handle 1: htb default 11 tc class add dev $INTERFACE parent 1: classid 1:1 htb rate 1000mbit tc class add dev $INTERFACE parent 1:1 classid 1:11 htb rate $LIMIT_RATE echo "限速规则已应用。" # 创建状态文件标记为“已限速” touch "$STATUS_FILE" else echo "系统已处于限速状态,无需重复操作。" fi else # 流量未超额 echo "流量正常,检查是否需要解除限速。" if [ -f "$STATUS_FILE" ]; then echo "流量已恢复正常,开始解除限速规则..." # 移除 tc 限速规则 tc qdisc del dev $INTERFACE root echo "限速规则已解除。" # 删除状态文件 rm "$STATUS_FILE" else echo "系统未限速,无需操作。" fi fi exit 0 ``` 设置执行权限 ```bash sudo chmod +x traffic_limiter.sh ``` ### 设置定时任务 (Cron Job) ```bash */5 * * * * /root/traffic_limiter.sh >> /var/log/traffic_limiter.log 2>&1 # 每五分钟执行一次并记录到日志文件 0 0 1 * * truncate -s 0 /var/log/traffic_limiter.log # 每月清空一次日志文件 ```
koalalove
2025年8月16日 20:13
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码