logo NodeSeekbeta

【教程】使用surge 监控自己的vps

先查看一下效果

众所周知,surge真的很贵,除了很贵,协议少,好像没什么毛病。

接下来开始教程。

本贴完全照抄这个连接仅做少许改动,完善了ubuntu系统下的一些小问题

debian,简直直接照抄,我这里继续照搬一下,ubuntu系统可能会遇到问题,在结尾处有说明。

内容我已经做必要的微改

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

编写服务

nano /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

编写运行程序

nano /root/traffic.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=`expr $str + 2`
str=`expr $str / 4 `
if [ $str = 0 ]; then
value="$info"B
elif [ $str = 1 ]; then
value=`expr $info / 1024`KB
elif [ $str = 2 ]; then
value=`expr $info / 1024 / 1024`MB
elif [ $str = 3 ]; then
value=`expr $info / 1024 / 1024 / 1024`GB
elif [ $str = 4 ]; then
value=`expr $info / 1024 / 1024 / 1024 / 1024`TB
elif [ $str = 5 ]; then
value=`expr $info / 1024 / 1024 / 1024 / 1024 / 1024`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

启动服务

systemctl enable --now traffic

查看状态

systemctl status traffic

surge上操作

点击>首页>修改>模块>新建本地模块>粘贴下面的内容(记得修改ip)>模块的名字打勾(√)完成。

代码中需要修改,1@你的ip地址,2@你的vps到期时间,3@你的流量,请修改后粘贴,不要无脑复制。

如果你想要求改你surge端显示的名字,请修改下面所有的cat vps为自己想要的名字即可。解开

#!name=CatVPS
#!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


如果你的系统是ubuntu 可能会出现以下错误

root:~# systemctl status traffic
● traffic.service - traffic
     Loaded: loaded (/etc/systemd/system/traffic.service; enabled; vendor preset: enabled)
     Active: activating (auto-restart) (Result: exit-code) since Tue 2024-02-06 14:12:29 CST; 2s ago
    Process: 400750 ExecStart=/root/traffic.sh (code=exited, status=203/EXEC)
   Main PID: 400750 (code=exited, status=203/EXEC)

Feb 06 14:12:29  systemd[1]: traffic.service: Main process exited, code=exited, status=203/EXEC
Feb 06 14:12:29  systemd[1]: traffic.service: Failed with result 'exit-code'.

这个时候不要慌张,是因为作业在帖子中没写明白

请提权运行或者运行以下内容

systemctl enable --now traffic

此时返回surge,刷新,即可完成。

感谢各位看官

1234
  • 给你个腿腿

  • 砸壳的能不能用

  • 好帖,给个鸡腿

  • @horizon9264 #2 砸壳 是什么?。,。

  • surge正版用不起,但是这帖子很有用

  • 支持 xhj003

  • @Bedlate #5 xhj001 不如骗个鸡腿?

  • @maizi #4 苹果巨魔砸壳的

  • xhj010 好强

  • @horizon9264 #8 可以用的应该,IPA包求分享我一下。我有个巨魔的,找不到包。

1234

你好啊,陌生人!

我的朋友,看起来你是新来的,如果想参与到讨论中,点击下面的按钮!

📈用户数目📈

目前论坛共有12781位seeker

🎉欢迎新用户🎉