共计 4154 个字符,预计需要花费 11 分钟才能阅读完成。
步骤
-
SSH 登录到 VPS
-
获取权限
sudo -i
- ### 更新和升级系统
apt update && apt upgrade -y
-
安装 caddy
-
Caddy 的 GPG 密钥添加到 trusted.gpg.d 目录中
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo tee /etc/apt/trusted.gpg.d/caddy-stable.asc >/dev/null
- #### 添加 Caddy 的 apt 仓库
echo "deb [trusted=yes] https://dl.cloudsmith.io/public/caddy/stable/deb/debian any-version main" | sudo tee /etc/apt/sources.list.d/caddy-stable.list
- #### apt 软件源列表并安装 Caddy
apt update
apt install caddy
- ### 编写服务
vim /etc/systemd/system/traffic.service
将下面内容粘贴进去后保存
[Unit]
Description=traffic
After=network.target
[Service]
Type=simple
User=root
WorkingDirectory=/root/
ExecStart=/root/traffic.sh
Restart=on-failure
RestartSec=30s
[Install]
WantedBy=multi-user.target
备注:默认的是网卡名是 eth0,如果是其它网卡名,将 ExecStart=/root/traffic.sh
这里改写为:ExecStart=/root/traffic.sh ethxx
ethxx为你的网卡名
- ### 编写运行程序
vim /root/traffice.sh
将以下内容粘贴进去并保存
#!/bin/sh
if ["$1" == "--help"];then
cat << EOF
$0 网卡名称
--help 打印帮助菜单
EOF
fi
if [-z "$1"];then
if ip a ; then
interface=$(ip a | grep mtu | awk -F ':' '{print $2}' | head -n 2 | tail -n +2 | awk -F '''{print $1}')
else
interface=eth0
fi
else
interface=$1
fi
if ["$(cat /proc/uptime | awk'{print $1}'| sed's/\..*//g')" -lt "120" ]; then
if [-n "$(cat ./all)" ]; then
expr "$(cat ./all)" + "$(cat ./all-now)" > ./all
else
echo "1" > ./all
fi
if [-n "$(cat ./tx)" ]; then
expr "$(cat ./tx)" + "$(cat ./tx-now)" > ./tx
else
echo "1" > ./tx
fi
if [-n "$(cat ./rx)" ]; then
expr "$(cat ./rx)" + "$(cat ./rx-now)" > ./rx
else
echo "1" > ./rx
fi
else
if [-z "$(cat ./all)" ]; then
echo "1" > ./all
fi
if [-z "$(cat ./tx)" ]; then
echo "1" > ./tx
fi
if [-z "$(cat ./rx)" ]; then
echo "1" > ./rx
fi
fi
nohup caddy file-server --browse --listen :49155 &
calculate() {
str=<code>expr $str + 2</code>
str=<code>expr $str / 4 </code>
if [$str = 0]; then
value="$info"B
elif [$str = 1]; then
value=<code>expr $info / 1024</code>KB
elif [$str = 2]; then
value=<code>expr $info / 1024 / 1024</code>MB
elif [$str = 3]; then
value=<code>expr $info / 1024 / 1024 / 1024</code>GB
elif [$str = 4]; then
value=<code>expr $info / 1024 / 1024 / 1024 / 1024</code>TB
elif [$str = 5]; then
value=<code>expr $info / 1024 / 1024 / 1024 / 1024 / 1024</code>PB
fi
}
START_TIME=$(date +%s)
while true; do
# 记录执行时间
CURRENT_TIME=$(date +%s)
TIME_PASSED=$((CURRENT_TIME - START_TIME))
NIC_RX=$(cat "/sys/class/net/${interface}/statistics/rx_bytes")
NIC_TX=$(cat "/sys/class/net/${interface}/statistics/tx_bytes")
NIC=$(expr $NIC_RX + $NIC_TX)
echo ${NIC} > ./all-now
echo ${NIC_TX} > ./tx-now
echo ${NIC_RX} > ./rx-now
rx=$(cat ./rx)
tx=$(cat ./tx)
all=$(cat ./all)
NIC_RX_ALL=$(expr ${NIC_RX} + ${rx})
NIC_TX_ALL=$(expr ${NIC_TX} + ${tx})
NIC_ALL=$(expr ${NIC} + ${all})
str=${#NIC_RX_ALL} && info=${NIC_RX_ALL} && calculate && NIC_RX_ALL=$value
str=${#NIC_TX_ALL} && info=${NIC_TX_ALL} && calculate && NIC_TX_ALL=$value
str=${#NIC_ALL} && info=${NIC_ALL} && calculate && NIC_ALL=$value
CPU_USAGE=$(top -b -n 1 | grep Cpu | awk '{print $2}' | cut -f 1 -d "%" | sed 's/\..*//g')
CPU_SYS=$(top -b -n 1 | grep Cpu | awk '{print $4}' | cut -f 1 -d "%" | sed 's/\..*//g')
CPU=$(expr $CPU_USAGE + $CPU_SYS)
MEM_TOTAL=$(free -m | awk -F '[ :]+' 'NR==2{print $2}')
MEM_USER=$(free -m | awk -F '[ :]+' 'NR==2{print $3}')
MEM=$(expr $MEM_USER \* 100 / $MEM_TOTAL)
clear
echo "网卡流量监控"
echo "----------------------------------------"
echo "网卡: $interface"
echo "发送: ${NIC_TX_ALL} 接收: ${NIC_RX_ALL} 总流量: ${NIC_ALL}"
echo "CPU 使用率:${CPU}% 内存使用率: ${MEM}%"
echo "{" > ./traffic
echo "\"in\": \"${NIC_RX_ALL}\"," >> ./traffic
echo "\"out\": \"${NIC_TX_ALL}\"," >> ./traffic
echo "\"all\": \"${NIC_ALL}\"," >> ./traffic
echo "\"cpu\": \"${CPU}%\"," >> ./traffic
echo "\"mem\": \"${MEM}%\"," >> ./traffic
echo "\"last_exec_time\": \"$(date '+%Y-%m-%d %H:%M:%S')\"" >> ./traffic
echo "}" >> ./traffic
# 休眠 10 秒钟
sleep 10
done
说明:此代码是通过 VPS 的 49155 端口进行监控,请确保该端口的开放,如果你熟悉代码,也可以根据自己需要进行修改
-
运行
进行完上述步骤后,执行下面指令运行
systemctl enable --now traffic
可以通过 bash traffic.sh
来直接运行
通过 systemctl status traffic
来查看服务状态
如果发现出来的时间不对,可以通过 timedatectl set-timezone Asia/Shanghai
来将 vps 时区调整为东八区。
Surge 模块安装
将下面内容复制到本地模块中:
#!name=CatVPS
#!desc= 监控 VPS 流量信息和处理器、内存占用情况
#!author= 面板和脚本部分 @wuhu_zzz VPS 端部分 @ATRI0828 由 @整点猫咪 进行整理
#!howto= 将模块内容复制到本地后根据自己 VPS IP 地址及端口修改 http://127.0.0.1:49155/traffic 部分进行使用 ddl= 后面接你的 VPS 到期时间,total= 输入你的 VPS 每月流量数目
[Panel]
Cat VPS = script-name=CatVPS
[Script]
CatVPS = type=generic,script-path=https://raw.githubusercontent.com/getsomecat/GetSomeCats/Surge/script/CatVPS.js, argument = url=http://127.0.0.1:49155/traffic&title=Cat VPS&icon=bolt.horizontal.icloud.fill&low=#06D6A0&mid=#FFD166&high=#EF476F&ddl=2100-01-01&total=10TB
将其中的 http://127.0.0.1:49155/traffic
部分根据自己上面教程部分改为自己的 VPS IP 和端口即可使用。
更多资源请 点击这里 关注 TG 频道
正文完