本教程来源于https://blog.csdn.net/gogoing0123/article/details/145264720,并修正了一些改变

本教程理论上适用于所有采用padavan固件的路由器升级tailscale的方法
简化版的安装与升级方法(采用WEB与SSH配合配置) 详细版的方法看下文及解释

本文经过多次编辑与配图,图不一定能匹配上,但步骤是经过多次实践验证过的,如有错误请留言

简化版的安装与升级方法

1.首次安装时开启默认的tailscale服务,升级版本从下文中的 简化后的升级tailscale步骤 开始
在这里插入图片描述在这里插入图片描述
2.停止tailscale(选关闭后等一分钟再操作下面步骤)
在这里插入图片描述
3.编辑默认的脚本文件

vi /etc/storage/script/Sh89_tailscale.sh

注释代码,位于118 ,119行

# [[ "$($SVC_PATH2 -h 2>&1 | wc -l)" -lt 2 ]] && [ ! -z $SVC_PATH2 ] && rm -rf $SVC_PATH2
# [ ! -f "$SVC_PATH2" ] && ln -sf "$SVC_PATH" "$SVC_PATH2" 

修改127行目录,将 socket=/var/run/tailscaled.sock 修改为 socket=/var/run/tailscale/tailscaled.sock
修改

su_cmd2="$SVC_PATH --state=/opt/app/tailscale/lib/tailscaled.state --socket=/var/run/tailscale/tailscaled.sock"

4.新建tailscale文件夹

mkdir /var/run/tailscale

5.删除默认已存在的文件,原文件如下图

rm -f /opt/bin/tailscale /opt/bin/tailscaled

默认文件
6.上传tailscaled与tailscale
在这里插入图片描述7.给文件授权

chmod +x /opt/bin/tailscale /opt/bin/tailscaled

8.启动tailscale(WEB端操作)
在这里插入图片描述

简化后的升级tailscale步骤

1.从官网下载最版的tailscale的软件 tailscale官方下载链接地址
在这里插入图片描述
2.解压此文件,找到解压后的tailscaled文件并直接用SSH工具上传到/opt/bin/目录中
在这里插入图片描述
3.WEB里直接启动tailscale服务(注意上传后的文件权限)
在这里插入图片描述

本教程理论上适用于所有采用padavan固件的路由器升级tailscale的方法

极路由4增强版型号为HC5962,与官方的B70采用同样的硬件,故padavan官方固件采用B70的型号,固件采用: 3.4.3.9-099_24-06-1 版本
在这里插入图片描述
先看原文及本文,有部分步骤可以省略,本文教程中第11步新建好tailscale目录,启动运行tailscale后会在目录中自动生成tailscaled.sock文件,所以第12-13步未操作也可以

下文以此型号测试并成功升级到最新版的tailscale

1.下载适合极四增padavan的新版tailscale软件

tailscale官网: https://pkgs.tailscale.com/stable/#static
在这里插入图片描述

2.开启padavan中SSH服务

位于:高级设置-系统管理-服务中的终端服务
在这里插入图片描述

3.开启tailscale服务

在这里插入图片描述
注:首次开启时需要安装tailscale服务,网络较好时等三分钟左右,当提示提示守护进程启动后再把tailscale关闭,安装新版本时需要退出后台进程
在这里插入图片描述

4.使用winscp软件备份原tailscale、tailscaled文件。

Winscp软件登录到路由器的方法参考原文的
文件位置:/opt/bin/,找到这两个文件后,修改文件名为:tailscale.bak、tailscaled.bak。
此处截图为安装成功后截图
此处截图为安装成功后截图,新安装好的只有2个文件

5.在电脑中解压第一步下载的tailscale_1.80.2_mipsle.tgz

在这里插入图片描述

6.使用winscp软件将第五步中的两个文件上传到/opt/bin/目录中(第四步打开的)

在这里插入图片描述

7.修改文件权限为777。

右键复制进去的文件(tailscale、tailscaled),选择属性,将文件的权限改为0777后点击确认。
在这里插入图片描述
正常来说此处在WEB控制台就可以正式开启tailscale服务了,开启失败或者使用管理的IP地址仍无法访问,主要是因为程序的运行路径改变导致的,需要执行以下步骤
在这里插入图片描述

8.修改tailscale的启动脚本(此步为解释说明,无需执行操作命令,只是验证存在的问题)

由于tailscale的版本不同,tailscale文件必须连接到tailscaled才能对其进行管理。
由于新版本的tailscale文件运行获取状态的位置是此目录:

/var/run/tailscale/tailscaled.sock

但旧版本的固件内脚本默认指定的位置是此目录:

/var/run/tailscaled.sock

目录不一致所以,当升级完版本之后,开启tailscale后用ssh命令执行tailscale status时可能会出现如下报错:
在这里插入图片描述

9.使用SSH修改路径并查看脚本文件

此处原文中的路径无法访问,经查找新版使用了 /etc/storage/script 目录,使用SSH命令执行,Sh89是tailscale的脚本,如下图

cd /etc/storage/script

在这里插入图片描述

10.备份脚本文件并编辑

cp Sh89_tailscale.sh Sh89_tailscale.sh.bak

编辑脚本内容,大概在第127行处

 vi Sh89_tailscale.sh

注:vi具体使用方法可百度。此处简单说明
按i进入编辑模式,上下键找到需要修改的地方,编辑完成后按esc键退出,此时光标切换到最下面,输入 :wq 可保存刚刚编辑的内容
在这里插入图片描述上图中为已修改的。主要把原来的路径添加个tailscale目录,改完如上图

11.用ssh软件进入 /var/run 目录并新建tailscale目录

cd /var/run
mkdir tailscale

12.复制文件tailscaled.sock到/var/run/tailscale目录中

(保存上面的脚本文件后就直接在控制台开启tailscale,此步骤无需执行,如果仍有问题,可以在 /var/run目录再执行如下命令)

cp tailscaled.sock /var/run/tailscale

13.查看是否成功

cd /var/run/tailscale
ls

在这里插入图片描述

14.WEB控制台重新开启tailscale即可,启动后就是最新版本

在这里插入图片描述
如开启后仍无法访问tailscale控制的web界面,可以使用ssh的命令开启
在这里插入图片描述

tailscale up

在这里插入图片描述

15.浏览器访问此地址可加入taiscale组网

在这里插入图片描述

在这里插入图片描述

第12步到第15步也可以使用winscp软件新建文件夹并复制tailscaled.sock,内容一致就行

16.启用tailscale后使用ssh软件查看状态,能正常显示已组网的设备信息即成功

tailscale status

17.升级tailscale版本

tailscale update

如果升级过程中网络较慢,可以到官网下载安装包
https://pkgs.tailscale.com/stable/#static
在这里插入图片描述
手动上传升级包(默认下载的目录为)

/home/admin/.cache/tailscale-update/

上传文件后 再执行 tailscale update (如无法启用成功。笔者下载时提示磁盘空间不足,无法用命令直接更新,实在不想折腾了就走手动更换的方法,如下)

18.手动更新软件版本

官网下载最新版本 https://pkgs.tailscale.com/stable/#static
在这里插入图片描述
直接替换运行程序(需要先关闭服务,替换完成后再启用服务,启用无响应时可以点一下后面的重启按纽)
使用winscp将原文件先备份(官网下载的是tgz格式的需要先解压后再将文件放到/opt/bin目录中)
在这里插入图片描述
此时进入控制台开启服务,启用无响应时可以点一下后面的重启按纽
在这里插入图片描述
日志中也会显示启动成功的提示在这里插入图片描述

tailscale高级用法

node模式(代理上网)

tailscale up --advertise-exit-node --accept-routes --hostname=B70

在这里插入图片描述
Subnet routers模式 (子网路由模式),

tailscale up --advertise-routes=192.168.199.0/24 --accept-routes

也可以这两个混合一起使用

tailscale up --advertise-routes=192.168.199.0/24 --accept-routes --advertise-exit-node

高级用法的具体用途自行百度,此处不做介绍

其它问题

执行tatailscale up时提示 tailscaled does not take non-flag arguments: [“up”]

此处主要为分析问题原因并给出解决办法,解决方法直接看下文
最近更新tailscale的新版本时报错
在这里插入图片描述
根本原因是:脚本错误地将 tailscale 命令指向了 tailscaled 二进制文件(通过软链接),导致执行 tailscale up 实际变成了 tailscaled up,而 tailscaled 不接受 up 这类子命令。

如下图中 tailscale 的软链接指向
在这里插入图片描述
在这里插入图片描述
说明 你错误地用 tailscaled 命令去执行了 up 操作,而实际上:

  • tailscaled 是 Tailscale 的后台守护进程(daemon),它只接受配置标志(如 --state, --socket
    等),不能直接跟 up、down 这类子命令。
  • tailscale(不带 d)才是 客户端命令行工具,用于执行up、down、status、web 等操作。

此目录文件/etc/storage/script/Sh89_tailscale.sh脚本中有这样一行:(位于第119行代码左右)

[ ! -f "$SVC_PATH2" ] && ln -sf "$SVC_PATH" "$SVC_PATH2"

其中:

  • SVC_PATH 是 tailscaled 的路径(由 i_app_get_cmd_file -cmd=“tailscaled” 设定)
  • SVC_PATH2 是 tailscale 的路径

这一行的意思是:
如果 /opt/bin/tailscale 不存在,就把它软链接到 $SVC_PATH(即 /opt/bin/tailscaled)。
这里就存在严重 bug!把 tailscaled 的二进制文件 软链接给了 tailscale,导致:
/opt/bin/tailscale → 实际是 tailscaled 二进制
所以当你运行 tailscale up,其实是在运行 tailscaled up,于是报错!

根本问题:使用了错误的软链接

# 脚本中的问题代码:
SVC_PATH2="$(which tailscale)"
[ ! -s "$SVC_PATH2" ] && SVC_PATH2="/opt/bin/tailscale"
...
[ ! -f "$SVC_PATH2" ] && ln -sf "$SVC_PATH" "$SVC_PATH2"
  • SVC_PATH 是 tailscaled 的路径(比如 /opt/bin/tailscaled) 却把它链接成tailscale,这完全错误!
  • tailscale 和 tailscaled 是两个不同的可执行文件,不能互相替代。

修复步骤

方案一:

1.ssh终端里删除错误的软链接或者使用winscp之类的软件直接删除tailscale文件:

rm -f /opt/bin/tailscale

2.重新下载正确的 tailscale 客户端(也就是重新上传tailscale与tailscaled文件)

从官网下载带有这两个文件的压缩包
在这里插入图片描述

3.重新授权

chmod +x /opt/bin/tailscale /opt/bin/tailscaled

4.启用tailscale服务

方案二:

只注释这两行代码,只要目录中存在 /opt/bin/tailscale 文件就是可以执行的,此代码位于脚本的118,119行

# [[ "$($SVC_PATH2 -h 2>&1 | wc -l)" -lt 2 ]] && [ ! -z $SVC_PATH2 ] && rm -rf $SVC_PATH2
# [ ! -f "$SVC_PATH2" ] && ln -sf "$SVC_PATH" "$SVC_PATH2" 

执行结果有以下两种情况:

第一:

如果系统里已经有正确的 /opt/bin/tailscale(比如你手动安装过,或插件已正确部署),
SVC_PATH2 就指向它,后续 tailscale up 能正常工作 ✅

第二:

如果文件中没有 tailscale 文件,
脚本会尝试运行一个不存在的命令,最多报“command not found”,但不会执行错误的 tailscaled up

如果找不到tailscale文件可以去作者的仓库下载安装的软件下载地址
https://github.com/hiboyhiboy/opt-file

注释这两行代码后须再按方案一上传tailscale与tailscaled文件并将文件授权,
方案二里不调整时无法在ssh里执行tailscale up之类的命令

此处为这两行解释运行的意图

“如果系统里没有正确的 tailscale 命令,就临时用 tailscaled 代替一下。”
但这个“代替”是错误的,因为 tailscale 和 tailscaled 是两个完全不同的程序
第一行详解

  1. $SVC_PATH2
    这是一个变量,通常值是 /opt/bin/tailscale(即 tailscale 命令的路径)。
  2. $SVC_PATH2 -h
    尝试运行 tailscale -h,也就是让程序显示“帮助信息”。
  3. 2>&1
    把错误信息(stderr)也合并到正常输出(stdout)里。
    (因为如果文件不是有效程序,会报错,比如 “not found” 或 “Permission denied”)
  4. | wc -l
    统计输出有几行。
    正常的 tailscale -h 会输出很多行(至少 10 行以上)。
    如果文件不存在、损坏、或根本不是 tailscale,输出可能只有 0 或 1 行。
  5. “$(…)” -lt 2
    -lt 意思是 “less than”(小于)。
    所以:如果帮助信息少于 2 行 → 认为这个 tailscale 文件“无效”。
  6. [ ! -z $SVC_PATH2 ]
    检查 $SVC_PATH2 变量是否非空(即路径确实被设置了)。
  7. rm -rf $SVC_PATH2
    如果上面两个条件都满足(文件无效 + 路径存在),就强制删除它。

第一行总结:
✅ “如果执行 /opt/bin/tailscale文件时 返回的信息少于2行时,就把它删掉。此处容易误删真正的tailscale文件”

第二行详解:

  1. [ ! -f “$SVC_PATH2” ]
    检查 /opt/bin/tailscale 这个文件是否存在。
    ! -f = “not a regular file” → 文件不存在。
  2. ln -sf “SVC_PATH” “SVC_PATH2”
    创建一个软链接(symbolic link):
    源文件(target):SVC_PATH → 通常是 /opt/bin/tailscaled
    链接名(link name):SVC_PATH2 → /opt/bin/tailscale
    ln -s = 创建软链接
    ln -f = 强制覆盖已存在的链接

✅ 第二行总结:
“如果 /opt/bin/tailscale 不存在,就创建一个快捷方式,让它指向 tailscaled。误删tailscale(无d)时将指令指向错误的文件,导致命令出错”

配置备份功能代码,此处只做说明不用配置

tailscale_backup() #此处代码所起的作用

Tailscale 登录后会生成一个“身份文件”(tailscaled.state),必须保存,否则每次都要重新登录。
正常运行时:把 /opt/app/tailscale/lib/ 里的文件备份到 /etc/storage/tailscale/lib/(路由器闪存,断电不丢)。
启动时:从闪存恢复到运行目录。

使用 md5sum 比较内容,只在文件变化时才复制,保护闪存寿命。

更换默认下载目录地址(方案验证未通过,仍有问题待解决,解决后会再次更新)

Tailscale 的 update 命令遵循 XDG Base Directory Specification,它会读取环境变量 XDG_CACHE_HOME 来决定缓存路径。

  • 默认:$HOME/.cache → 你的系统是 /home/admin/.cache
  • 修改后:XDG_CACHE_HOME=/tmp/.cache → 缓存变为 /tmp/.cache

🔧 操作步骤

方法 1:单次更新时临时指定缓存目录

设置环境变量并立即执行更新

XDG_CACHE_HOME=/tmp/.cache tailscale update

这条命令会让 Tailscale 把下载的 .tgz 文件存到 /tmp/.cache/tailscale-update/,利用 /tmp 的内存空间完成更新。
✅ 优点:无需修改系统配置,安全可靠
⚠️ 注意:确保 /tmp 有足够空间(运行 df -h /tmp 查看)

方法 2:在你的初始化脚本(init.sh)中永久设置

如果你的 init.sh 会定期调用 tailscale update,建议在脚本开头加上:
在 init.sh 开头添加

export XDG_CACHE_HOME="/tmp/.cache"
mkdir -p "$XDG_CACHE_HOME"

这样后续所有 tailscale update 都会使用 /tmp/.cache,避免空间不足。

方法 3:手动清理 + 强制重试(快速修复)

如果只是临时想让更新成功,可以:

  1. 清理旧缓存
rm -rf /home/admin/.cache/tailscale-update/
  1. 临时用 /tmp 作为 HOME(极端方法,不推荐长期用)
HOME=/tmp XDG_CACHE_HOME=/tmp/.cache tailscale update

以下为作者原始脚本内容,仅供参考

原始脚本文件位于cd /etc/storage/script 目录中的 Sh89_tailscale.sh
源脚本的文件内容为(复制于2026年1月19日)

#!/bin/bash
#copyright by hiboy
source /etc/storage/script/init.sh
tailscale_enable=`nvram get app_82`
if [ "$tailscale_enable" != "0" ] && [ "$tailscale_enable" != "1" ] && [ "$tailscale_enable" != "2" ] && [ "$tailscale_enable" != "3" ] && [ "$tailscale_enable" != "4" ] ; then
	tailscale_enable=""
fi
[ -z $tailscale_enable ] && tailscale_enable=0 && nvram set app_82=0
tailscale_cmd="$(nvram get app_44)"
if [ -z "$(echo $tailscale_cmd | grep tailscale)" ] ; then
	tailscale_cmd=""
fi
[ -z "$tailscale_cmd" ] && tailscale_cmd="tailscale up" && nvram set app_44="$tailscale_cmd"
tailscale_renum=`nvram get tailscale_renum`

if [ ! -z "$(echo $scriptfilepath | grep -v "/tmp/script/" | grep tailscale)" ] && [ ! -s /tmp/script/_app11 ] ; then
	mkdir -p /tmp/script
	{ echo '#!/bin/bash' ; echo $scriptfilepath '"$@"' '&' ; } > /tmp/script/_app11
	chmod 777 /tmp/script/_app11
fi

tailscale_restart () {
i_app_restart "$@" -name="tailscale"
}

tailscale_get_status () {

if [ "$tailscale_enable" = "3" ] ; then
logger -t "【tailscale】" "配置恢复初始化"
iptables -D INPUT -i tailscale0 -j ACCEPT
killall tailscaled tailscale
rm -rf /opt/app/tailscale/lib/*
rm -rf /etc/storage/tailscale/lib/*
tailscale_enable=0 && nvram set app_82=0
fi
if [ "$tailscale_enable" = "1" ] || [ "$tailscale_enable" = "2" ] || [ "$tailscale_enable" = "4" ] ; then
B_restart="1"
fi
B_restart="$B_restart$tailscale_cmd"

i_app_get_status -name="tailscale" -valb="$B_restart"
}

tailscale_check () {

tailscale_get_status
if [ "$tailscale_enable" = "0" ] && [ "$needed_restart" = "1" ] ; then
	[ ! -z "`pidof tailscaled`" ] && logger -t "【tailscale】" "停止 tailscale" && tailscale_close
	{ kill_ps "$scriptname" exit0; exit 0; }
fi
if [ "$tailscale_enable" = "1" ] || [ "$tailscale_enable" = "2" ] || [ "$tailscale_enable" = "4" ] ; then
	if [ "$needed_restart" = "1" ] ; then
		tailscale_close
		tailscale_start
	else
		[ -z "`pidof tailscaled`" ] && tailscale_restart
		if [ "$tailscale_enable" = "2" ] && [ -z "`pidof tailscale`" ] ; then
			SVC_PATH2="$(which tailscale)"
			[ ! -s "$SVC_PATH2" ] && SVC_PATH2="/opt/bin/tailscale"
			su_cmd2="$SVC_PATH2 web --listen `nvram get lan_ipaddr`:8989"
			logger -t "【tailscale】" "运行本机管理界面 $su_cmd2"
			eval "$su_cmd2" &
		fi
		iptables -C INPUT -i tailscale0 -j ACCEPT
		if [ "$?" != 0 ] ; then
			iptables -A INPUT -i tailscale0 -j ACCEPT
		fi
	fi
fi
}

tailscale_keep () {
i_app_keep -name="tailscale" -pidof="tailscaled" &
tailscale_enable=`nvram get app_82`
offweb=1
while [ "$tailscale_enable" = "1" ] || [ "$tailscale_enable" = "2" ] || [ "$tailscale_enable" = "4" ] ; do
iptables -C INPUT -i tailscale0 -j ACCEPT
if [ "$?" != 0 ] ; then
	iptables -A INPUT -i tailscale0 -j ACCEPT
fi
tailscale_backup
sleep 100
if [ "$tailscale_enable" = "2" ] || [ "$tailscale_enable" = "4" ] ; then
if [ "$offweb" -gt "3" ] ; then
offweb=1
[ "$tailscale_enable" = "2" ] && logger -t "【tailscale】" "本机管理界面 (自动关闭)"
[ "$tailscale_enable" = "4" ] && logger -t "【tailscale】" "自定义参数启动 (自动关闭)"
tailscale_enable=1 && nvram set app_82=1
killall tailscale
fi
offweb=`expr $offweb + 1`
fi
tailscale_enable=`nvram get app_82`
done
}

tailscale_close () {
kill_ps "$scriptname keep"
sed -Ei '/【tailscale】|^$/d' /tmp/script/_opt_script_check
iptables -D INPUT -i tailscale0 -j ACCEPT
killall tailscaled tailscale
tailscale_backup
umount /opt/app/tailscale/lib/tailscaled.state
umount /opt/app/tailscale/lib/cmd.log.conf
kill_ps "/tmp/script/_app11"
kill_ps "_tailscale.sh"
kill_ps "$scriptname"
}

tailscale_start () {
check_webui_yes
i_app_get_cmd_file -name="tailscale" -cmd="tailscaled" -cpath="/opt/bin/tailscaled" -down1="$hiboyfile/tailscaled" -down2="$hiboyfile2/tailscaled"
SVC_PATH2="$(which tailscale)"
[ ! -s "$SVC_PATH2" ] && SVC_PATH2="/opt/bin/tailscale"
mkdir -p /etc/storage/tailscale/lib
mkdir -p /opt/app/tailscale/lib
tailscale_backup rebackup
[[ "$($SVC_PATH2 -h 2>&1 | wc -l)" -lt 2 ]] && [ ! -z $SVC_PATH2 ] && rm -rf $SVC_PATH2
[ ! -f "$SVC_PATH2" ] && ln -sf "$SVC_PATH" "$SVC_PATH2" 
tailscale_v=$($SVC_PATH -version | sed -n '1p')
[ "$(nvram get tailscale_v)" != "$tailscale_v" ] && nvram set tailscale_v="$tailscale_v"
if [ ! -s "$SVC_PATH" ] ; then
	logger -t "【tailscale】" "找不到 $SVC_PATH ,需要手动安装 $SVC_PATH"
	logger -t "【tailscale】" "启动失败, 10 秒后自动尝试重新启动" && sleep 10 && tailscale_restart x
fi
cd "$(dirname "$SVC_PATH")"
su_cmd2="$SVC_PATH --state=/opt/app/tailscale/lib/tailscaled.state --socket=/var/run/tailscaled.sock"
logger -t "【tailscaled】" "运行主程序 $su_cmd2"
eval "$su_cmd2" &
sleep 4
i_app_keep -t -name="tailscale" -pidof="tailscaled"
iptables -C INPUT -i tailscale0 -j ACCEPT
if [ "$?" != 0 ] ; then
	iptables -A INPUT -i tailscale0 -j ACCEPT
fi

if [ "$tailscale_enable" = "4" ] ; then
tailscale_cmd
logger -t "【tailscale】" "自定义参数启动 $su_cmd2"
cmd_name="tailscale_cmd"
$tailscale_cmd 2>&1 | awk '{cmd="logger -t '"'"''$cmd_name''"' ' "'"$0"'"' "';";system(cmd)}' &

sleep 4
fi
if [ "$tailscale_enable" = "2" ] ; then
su_cmd2="$SVC_PATH2 web --listen `nvram get lan_ipaddr`:8989"
logger -t "【tailscale】" "运行本机管理界面 $su_cmd2"
eval "$su_cmd2" &
sleep 4
[ ! -z "`pidof tailscale`" ] && logger -t "【tailscale】" "本机管理界面 启动成功" && tailscale_restart o
[ -z "`pidof tailscale`" ] && logger -t "【tailscale】" "本机管理界面 启动失败, 注意检tailscale是否下载完整,10 秒后自动尝试重新启动" && sleep 10 && tailscale_restart x
logger -t "【tailscale】" "本机管理界面 (5分钟自动关闭)"
fi
tailscale_backup
eval "$scriptfilepath keep &"

exit 0
}


tailscale_backup () {
rebackup=$1
if [ -z "$rebackup" ] ; then
for t_paths in /opt/app/tailscale/lib/*
do
	t_conf="$(basename "$(echo $t_paths | grep -v .txt)")"
	if [ ! -z $t_conf ] ; then
		MD5_backup="$(md5sum /opt/app/tailscale/lib/$t_conf | awk '{print $1;}')"
		MD5_storage="$(md5sum /etc/storage/tailscale/lib/$t_conf | awk '{print $1;}')"
		if [ "$MD5_backup"x != "$MD5_storage"x ] ; then
			cp -f /opt/app/tailscale/lib/$t_conf /etc/storage/tailscale/lib/$t_conf
			logger -t "【tailscale】" "备份配置文件 $t_conf 到路由内部储存"
		fi
	fi
done
else
for t_paths in /etc/storage/tailscale/lib/*
do
	t_conf="$(basename "$(echo $t_paths | grep -v .txt)")"
	if [ ! -z $t_conf ] ; then
		MD5_backup="$(md5sum /opt/app/tailscale/lib/$t_conf | awk '{print $1;}')"
		MD5_storage="$(md5sum /etc/storage/tailscale/lib/$t_conf | awk '{print $1;}')"
		if [ "$MD5_backup"x != "$MD5_storage"x ] ; then
			cp -f /etc/storage/tailscale/lib/$t_conf /opt/app/tailscale/lib/$t_conf
			logger -t "【tailscale】" "从路由内部储存恢复配置文件 $t_conf"
		fi
	fi
done
fi
}

update_app () {
mkdir -p /opt/app/tailscale
if [ "$1" = "update_asp" ] ; then
	rm -rf /opt/app/tailscale/Advanced_Extensions_tailscale.asp
fi
if [ "$1" = "del" ] ; then
	rm -rf /opt/app/tailscale/Advanced_Extensions_tailscale.asp /opt/bin/tailscale /opt/bin/tailscaled /opt/opt_backup/bin/tailscale /opt/opt_backup/bin/tailscaled
fi

initconfig

# 加载程序配置页面
if [ ! -f "/opt/app/tailscale/Advanced_Extensions_tailscale.asp" ] || [ ! -s "/opt/app/tailscale/Advanced_Extensions_tailscale.asp" ] ; then
	wgetcurl.sh /opt/app/tailscale/Advanced_Extensions_tailscale.asp "$hiboyfile/Advanced_Extensions_tailscaleasp" "$hiboyfile2/Advanced_Extensions_tailscaleasp"
fi
umount /www/Advanced_Extensions_app11.asp
mount --bind /opt/app/tailscale/Advanced_Extensions_tailscale.asp /www/Advanced_Extensions_app11.asp
# 更新程序启动脚本

[ "$1" = "del" ] && /etc/storage/www_sh/tailscale del &
}

case $ACTION in
start)
	tailscale_close
	tailscale_check
	;;
check)
	tailscale_check
	;;
stop)
	tailscale_close
	;;
updateapp11)
	tailscale_restart o
	if [ "$tailscale_enable" = "1" ] || [ "$tailscale_enable" = "2" ] || [ "$tailscale_enable" = "4" ] ; then
		nvram set tailscale_status="updatetailscale"
		logger -t "【tailscale】" "重启"
		tailscale_restart
	fi
	[ "$tailscale_enable" = "0" ] && nvram set tailscale_v="" && logger -t "【tailscale】" "更新" && update_app del
	;;
update_app)
	update_app
	;;
update_asp)
	update_app update_asp
	;;
keep)
	#tailscale_check
	tailscale_keep
	;;
*)
	tailscale_check
	;;
esac


Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐