飞牛应用中心的应用更新太慢了,对于想体验最新版的人有点难受,我就想着能不能做个脚本自动更新frpc的二进制文件,然后发现替换二进制文件后怎么用命令重启应用中心的应用才是难点,我发现frpc的作者在这个应用的文件夹下写了一个重启代码 /vol1/@appcenter/frpc/ui/restart.sh,这就方便很多了
检测更新代码如下:
#!/bin/bash
APP_DIR="/vol1/@appcenter/frpc/app"
UI_DIR="/vol1/@appcenter/frpc/ui"
FRPC_BIN="$APP_DIR/frpc"
TMP_DIR="/tmp/frpc_update"
# 获取当前版本
CURRENT_VERSION=$($FRPC_BIN -v 2>/dev/null | grep -oE '[0-9]+\.[0-9]+\.[0-9]+')
# 获取最新版本号
LATEST_VERSION=$(curl -s https://api.github.com/repos/fatedier/frp/releases/latest | grep '"tag_name":' | sed -E 's/.*"v?([^"]+)".*/\1/')
echo "当前版本: $CURRENT_VERSION"
echo "最新版本: $LATEST_VERSION"
if [ "$CURRENT_VERSION" != "$LATEST_VERSION" ]; then
echo "发现新版本,开始更新..."
mkdir -p $TMP_DIR
cd $TMP_DIR
# 下载最新版
wget -q https://github.com/fatedier/frp/releases/download/v${LATEST_VERSION}/frp_${LATEST_VERSION}_linux_amd64.tar.gz
# 解压
tar -xzf frp_${LATEST_VERSION}_linux_amd64.tar.gz
# 复制到临时文件
cp frp_${LATEST_VERSION}_linux_amd64/frpc ${APP_DIR}/frpc.new
# 设置执行权限
chmod +x ${APP_DIR}/frpc.new
# 原子替换
mv -f ${APP_DIR}/frpc.new ${FRPC_BIN}
# 切换目录再清理
cd /root
rm -rf $TMP_DIR
echo "更新完成,正在重启frpc..."
bash $UI_DIR/restart.sh
else
echo "frpc已是最新版本,无需更新。"
fi
vi /vol1/@appcenter/frpc/ui/update创建脚本
将脚本内容复制粘贴
chmod +x /vol1/@appcenter/frpc/ui/update赋予脚本执行权限
创建定时任务(每天凌晨三点执行)
crontab -e编辑cron
添加一行:
0 3 * * * /bin/bash /vol1/@appcenter/frpc/ui/update_frpc.sh
这样就能每天自动检测并更新frpc的二进制文件
实测更新重启后在frps能看到飞牛的frpc客户端已经是最新版

应用中心的版本显示不会变,但实际已经是最新版的了

理论上frps也可以这样更新,修改一下脚本内容就行