微信网站设计模板下载,网站设置桌面快捷方式,重庆发布公众号,营销型网站审定标准openwrt中taiscale自动安装脚本详解
一、代码仓库地址
https://github.com/adyanth/openwrt-tailscale-enabler
二、代码仓库中脚本文件详解 主要包含三个脚本分别是etc/init.d/tailscale、usr/bin/tailscale、usr/bin/tailscaled #xff0c;接下来逐个分析一下脚本中的具…openwrt中taiscale自动安装脚本详解
一、代码仓库地址
https://github.com/adyanth/openwrt-tailscale-enabler
二、代码仓库中脚本文件详解 主要包含三个脚本分别是etc/init.d/tailscale、usr/bin/tailscale、usr/bin/tailscaled 接下来逐个分析一下脚本中的具体内容 1、etc/init.d/tailscale 这个脚本在 OpenWRT 系统初始化时执行用于控制 Tailscale 守护进程的启动和停止。脚本具体内容如下 #!/bin/sh /etc/rc.common# 版权声明表明脚本归 Google LLC 所有使用 Apache-2.0 许可。USE_PROCD1 # 使用 procdOpenWRT 的进程管理守护程序。
START99 # 设置脚本启动的顺序数字越大越后启动。
STOP1 # 设置脚本停止的顺序数字越小越先停止。# start_service 函数定义了服务启动时的行为。
start_service() {procd_open_instance # 开启一个新的 procd 实例。procd_set_param command /usr/bin/tailscaled # 设置要运行的命令Tailscale 守护进程。# 设置 Tailscale 监听 VPN 数据包的端口号。# 远程节点将自动获悉新端口号但如果要设置外部防火墙规则则可能需要配置此项。procd_append_param command --port 41641# OpenWRT 的 /var 是链接到 /tmp 的所以将持久状态写到别的地方。procd_append_param command --state /etc/config/tailscaled.state# 为 TLS 证书和 Taildrop 持久化文件procd_append_param command --statedir /etc/tailscale/procd_set_param respawn # 设置进程崩溃后自动重启。procd_set_param stdout 1 # 将标准输出重定向到系统日志。procd_set_param stderr 1 # 将标准错误输出也重定向到系统日志。procd_close_instance # 关闭 procd 实例。
}# stop_service 函数定义了服务停止时的行为。
stop_service() {/usr/bin/tailscaled --cleanup # 执行 Tailscale 守护进程的清理操作。
}
2、usr/bin/tailscale 这个脚本首先检测系统架构并下载适用于该架构的 Tailscale 版本。它还确保下载最新版本的 Tailscale。脚本使用 wget 工具从 Tailscale 官方网站下载 tar 压缩包并将其解压到 /tmp 目录。最后脚本尝试运行解压后的 Tailscale 程序。脚本具体内容如下 #!/bin/sh# 当脚本中的任何命令执行失败时脚本将停止执行。
set -e# 检查是否已有 /tmp/tailscale 文件如果没有则执行后续安装步骤。
if [ ! -f /tmp/tailscale ]; then# 获取当前系统的架构类型。arch$(uname -m)# 对于 MIPS 架构进一步确定是大端be还是小端le。if [ $arch mips ]; thenendianness$(echo -n I | hexdump -o | awk { print (substr($2,6,1)1) ? le : ; exit })# 对于其他架构类型进行名称调整以匹配 Tailscale 的命名规则。elif [ $arch armv7l ]; thenarcharmelif [ $arch aarch64 ]; thenarcharm64elif [ $arch x86_64 ]; thenarchamd64fi# 设置 Tailscale 的默认版本号。tailscale_version1.56.1# 从 Tailscale 的官方网站获取最新版本号。latest_version$(wget -O- https://pkgs.tailscale.com/stable/ | grep tailscale_ | head -1 | cut -d_ -f 2)# 如果最新版本号与默认版本号不同则使用最新版本号。if [ $tailscale_version ! $latest_version ]; thentailscale_version$latest_versionfi# 组合出完整的 Tailscale 版本号。version${tailscale_version}_${arch}${endianness}# 显示下载信息。echo Downloading Tailscale ${version} ..# 创建文件列表用于指定 tar 命令解压哪些文件。echo -e tailscale_${version}/tailscale /tmp/tailscale_${version}_files.txt# 如果 /tmp/tailscaled 文件不存在则将其添加到文件列表中。if [ ! -f /tmp/tailscaled ]; thenecho -e tailscale_${version}/tailscaled /tmp/tailscale_${version}_files.txtfi# 下载并解压 Tailscale。wget -O- https://pkgs.tailscale.com/stable/tailscale_${version}.tgz | tar x -zvf - -C /tmp -T /tmp/tailscale_${version}_files.txt# 移动解压后的文件到 /tmp 目录并清理不再需要的文件。mv /tmp/tailscale_$version/* /tmprm -rf /tmp/tailscale_${version}*# 显示下载完成信息。echo Done!
fi# 运行 Tailscale传递任何给脚本的参数。
/tmp/tailscale $
这句详细解释一下每个命令具体含义
wget -O- https://pkgs.tailscale.com/stable/ | grep tailscale_ | head -1 | cut -d_ -f 2wget -O- https://pkgs.tailscale.com/stable/ 这个命令使用 wget 从指定的 URL 下载数据。-O- 参数指示 wget 将下载的内容输出到标准输出stdout而不是保存为文件。 | grep tailscale_ 通过管道|将 wget 的输出传递给 grep 命令。grep 命令搜索包含 “tailscale_” 的文本行。 | head -1 再次通过管道将 grep 的输出传递给 head 命令。head -1 命令提取传入数据的第一行。 | cut -d_ -f 2 最后将 head 的输出传递给 cut 命令。cut 命令按照指定的分隔符这里是下划线 _分割文本并提取第二段文本-f 2。
3、usr/bin/tailscaled 这个脚本的主要作用是检查并下载最新版本的 Tailscale然后在 /tmp 目录下运行它。脚本首先确定运行它的系统的架构类型然后下载并解压适合该架构的 Tailscale 版本。如果 /tmp/tailscaled 文件已存在脚本不会执行下载和安装步骤。脚本具体内容如下 #!/bin/sh# 当任何语句的执行结果不是true时就退出脚本
set -e# 检查/tmp/tailscaled文件是否存在如果不存在则执行后续的安装步骤
if [ ! -f /tmp/tailscaled ]; then# 获取系统的架构类型arch$(uname -m)# 如果架构是mips则进一步确定是大端be还是小端leif [ $arch mips ]; thenendianness$(echo -n I | hexdump -o | awk { print (substr($2,6,1)1) ? le : ; exit })# 对于其他架构类型进行名称调整以匹配 Tailscale 的要求elif [ $arch armv7l ]; thenarcharmelif [ $arch aarch64 ]; thenarcharm64elif [ $arch x86_64 ]; thenarchamd64fi# 设置 Tailscale 的默认版本tailscale_version1.56.1# 从 Tailscale 的官方网站获取最新版本号latest_version$(wget -O- https://pkgs.tailscale.com/stable/ | grep tailscale_ | head -1 | cut -d_ -f 2)# 如果最新版本号与默认版本号不同则使用最新版本if [ $tailscale_version ! $latest_version ]; thentailscale_version$latest_versionfi# 组合出完整的 Tailscale 版本号version${tailscale_version}_${arch}${endianness}# 显示下载信息echo Downloading Tailscale ${version} ..# 记录要下载的文件列表echo -e tailscale_${version}/tailscaled /tmp/tailscale_${version}_files.txt# 从 Tailscale 的官方网站下载并解压相应版本的 Tailscalewget -O- https://pkgs.tailscale.com/stable/tailscale_${version}.tgz | tar x -zvf - -C /tmp -T /tmp/tailscale_${version}_files.txt# 移动解压后的文件并清理临时文件mv /tmp/tailscale_$version/* /tmprm -rf /tmp/tailscale_${version}*# 显示下载完成信息echo Done!
fi# 执行 Tailscale
/tmp/tailscaled $