openwrt 下 tailscale 自动更新版本的脚本
tailscale的更新频率还是挺高的,如果经常要手动下载软件包更新,太过麻烦,另外openwrt opkg命令的更新版本,总会比官网的慢不少。所以萌生了脚本一键更新的想法。通过折腾才有下面的代码。
本人不懂如何写脚本代码,这些都是基于自己平常折腾、参考别人的一些粗浅的修改,勿喷。
PS:tailscale的官方更新地址为https://pkgs.tailscale.com/stable/
由于tailscale适配的架构有很多,请自己仔细甄别自己的架构,并适当修改下面的代码。
386: tailscale_${tag}386.tgz
amd64: tailscale${tag}amd64.tgz
arm: tailscale${tag}arm.tgz
arm64: tailscale${tag}arm64.tgz
geode: tailscale${tag}geode.tgz
mips: tailscale${tag}mips.tgz
mips64: tailscale${tag}mips64.tgz
mips64le: tailscale${tag}mips64le.tgz
mipsle: tailscale${tag}mipsle.tgz
riscv64: tailscale${tag}_riscv64.tgz
以下是代码,复制所有,新建tailscale.sh文件,粘贴进去并赋予755权限,即可运行。可以通过cron命令定时运行,就可以免去了手工更新的烦恼。
#!/bin/sh
tag=`wget --no-check-certificate -q -qO- "https://pkgs.tailscale.com/stable/"| grep -m 1 -o -E "tailscale_[^<>]*?_arm64.tgz" | head -1 | cut -d \_ -f2`
if [ -n "$tag" ] && [ "$tag" == "$(tailscale --version | head -1)" ]; then
echo "`date +"%Y%m%d %H:%M:%S"` It is already the latest version v$(tailscale --version | head -1) now! The process will exit." >> /root/tailscale_update.log 2>&1
exit
elif [ "$tag" != "$(tailscale --version | head -1)" ]; then
echo "`date +"%Y%m%d %H:%M:%S"` The latest version is v$tag, and the local version is v$(tailscale --version | head -1)! Tailscale will be updated." >> /root/tailscale_update.log 2>&1
wget --no-check-certificate -c -O /var/tmp/tailscale_${tag}_arm64.tgz https://pkgs.tailscale.com/stable/tailscale_${tag}_arm64.tgz
cd /var/tmp/
tar -zxvf tailscale_${tag}_arm64.tgz
sleep 5
cd tailscale_${tag}_arm64
/etc/init.d/tailscale stop
mv tailscale /usr/sbin/
mv tailscaled /usr/sbin/
chmod 755 /usr/sbin/tailscale /usr/sbin/tailscaled
cd /var/tmp/
rm -rf tailscale_${tag}_arm64.tgz
rm -rf tailscale_${tag}_arm64
/etc/init.d/tailscale start
sleep 5
/etc/init.d/tailscale restart
echo "`date +"%Y%m%d %H:%M:%S"` Successfully updated." >> /root/tailscale_update.log 2>&1
exit
else
echo "`date +"%Y%m%d %H:%M:%S"` Something is wrong, exit" >> /root/tailscale_update.log 2>&1
exit
fi
以上。