亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

openwrt中taiscale自動(dòng)安裝腳本方式

 更新時(shí)間:2025年03月03日 10:35:10   作者:博刻  
這篇文章介紹了在OpenWrt系統(tǒng)中自動(dòng)安裝Tailscale的腳本,腳本分為三個(gè)部分:etc/init.d/tailscale用于控制Tailscale守護(hù)進(jìn)程的啟動(dòng)和停止,usr/bin/tailscale負(fù)責(zé)下載和運(yùn)行Tailscale,而usr/bin/tailscaled則專門用于檢查和下載最新版本的Tailscale

openwrt中taiscale自動(dòng)安裝腳本

一、代碼倉(cāng)庫(kù)地址

https://github.com/adyanth/openwrt-tailscale-enabler

二、代碼倉(cāng)庫(kù)中腳本文件詳解

主要包含三個(gè)腳本分別是etc/init.d/tailscaleusr/bin/tailscale、usr/bin/tailscaled ,接下來逐個(gè)分析一下腳本中的具體內(nèi)容:

1、etc/init.d/tailscale

這個(gè)腳本在 OpenWRT 系統(tǒng)初始化時(shí)執(zhí)行,用于控制 Tailscale 守護(hù)進(jìn)程的啟動(dòng)和停止。

腳本具體內(nèi)容如下:

#!/bin/sh /etc/rc.common

# 版權(quán)聲明,表明腳本歸 Google LLC 所有,使用 Apache-2.0 許可。

USE_PROCD=1  # 使用 procd,OpenWRT 的進(jìn)程管理守護(hù)程序。
START=99     # 設(shè)置腳本啟動(dòng)的順序,數(shù)字越大越后啟動(dòng)。
STOP=1       # 設(shè)置腳本停止的順序,數(shù)字越小越先停止。

# start_service 函數(shù)定義了服務(wù)啟動(dòng)時(shí)的行為。
start_service() {
  procd_open_instance  # 開啟一個(gè)新的 procd 實(shí)例。
  procd_set_param command /usr/bin/tailscaled  # 設(shè)置要運(yùn)行的命令(Tailscale 守護(hù)進(jìn)程)。

  # 設(shè)置 Tailscale 監(jiān)聽 VPN 數(shù)據(jù)包的端口號(hào)。
  # 遠(yuǎn)程節(jié)點(diǎn)將自動(dòng)獲悉新端口號(hào),但如果要設(shè)置外部防火墻規(guī)則,則可能需要配置此項(xiàng)。
  procd_append_param command --port 41641

  # OpenWRT 的 /var 是鏈接到 /tmp 的,所以將持久狀態(tài)寫到別的地方。
  procd_append_param command --state /etc/config/tailscaled.state
  
  # 為 TLS 證書和 Taildrop 持久化文件
  procd_append_param command --statedir /etc/tailscale/

  procd_set_param respawn  # 設(shè)置進(jìn)程崩潰后自動(dòng)重啟。
  procd_set_param stdout 1 # 將標(biāo)準(zhǔn)輸出重定向到系統(tǒng)日志。
  procd_set_param stderr 1 # 將標(biāo)準(zhǔn)錯(cuò)誤輸出也重定向到系統(tǒng)日志。

  procd_close_instance  # 關(guān)閉 procd 實(shí)例。
}

# stop_service 函數(shù)定義了服務(wù)停止時(shí)的行為。
stop_service() {
  /usr/bin/tailscaled --cleanup  # 執(zhí)行 Tailscale 守護(hù)進(jìn)程的清理操作。
}

2、usr/bin/tailscale

這個(gè)腳本首先檢測(cè)系統(tǒng)架構(gòu)并下載適用于該架構(gòu)的 Tailscale 版本。它還確保下載最新版本的 Tailscale。

腳本使用 wget 工具從 Tailscale 官方網(wǎng)站下載 tar 壓縮包,并將其解壓到 /tmp 目錄。最后,腳本嘗試運(yùn)行解壓后的 Tailscale 程序。

腳本具體內(nèi)容如下:

#!/bin/sh

# 當(dāng)腳本中的任何命令執(zhí)行失敗時(shí),腳本將停止執(zhí)行。
set -e

# 檢查是否已有 /tmp/tailscale 文件,如果沒有,則執(zhí)行后續(xù)安裝步驟。
if [ ! -f /tmp/tailscale ]; then
    # 獲取當(dāng)前系統(tǒng)的架構(gòu)類型。
    arch=$(uname -m)
    # 對(duì)于 MIPS 架構(gòu),進(jìn)一步確定是大端(be)還是小端(le)。
    if [ "$arch" == "mips" ]; then
        endianness=$(echo -n I | hexdump -o | awk '{ print (substr($2,6,1)=="1") ? "le" : ""; exit }')
    # 對(duì)于其他架構(gòu)類型,進(jìn)行名稱調(diào)整以匹配 Tailscale 的命名規(guī)則。
    elif [ "$arch" == "armv7l" ]; then
        arch=arm
    elif [ "$arch" == "aarch64" ]; then
        arch=arm64
    elif [ "$arch" == "x86_64" ]; then
        arch=amd64
    fi

    # 設(shè)置 Tailscale 的默認(rèn)版本號(hào)。
    tailscale_version="1.56.1"

    # 從 Tailscale 的官方網(wǎng)站獲取最新版本號(hào)。
    
    latest_version=$(wget -O- https://pkgs.tailscale.com/stable/ | grep tailscale_ | head -1 | cut -d'_' -f 2)
    # 如果最新版本號(hào)與默認(rèn)版本號(hào)不同,則使用最新版本號(hào)。
    if [ "$tailscale_version" != "$latest_version" ]; then
        tailscale_version=$latest_version
    fi

    # 組合出完整的 Tailscale 版本號(hào)。
    version="${tailscale_version}_${arch}${endianness}"

    # 顯示下載信息。
    echo "Downloading Tailscale ${version} .."

    # 創(chuàng)建文件列表,用于指定 tar 命令解壓哪些文件。
    echo -e "tailscale_${version}/tailscale" > /tmp/tailscale_${version}_files.txt

    # 如果 /tmp/tailscaled 文件不存在,則將其添加到文件列表中。
    if [ ! -f /tmp/tailscaled ]; then
        echo -e "tailscale_${version}/tailscaled" >> /tmp/tailscale_${version}_files.txt
    fi

    # 下載并解壓 Tailscale。
    wget -O- https://pkgs.tailscale.com/stable/tailscale_${version}.tgz | tar x -zvf - -C /tmp -T /tmp/tailscale_${version}_files.txt

    # 移動(dòng)解壓后的文件到 /tmp 目錄,并清理不再需要的文件。
    mv /tmp/tailscale_$version/* /tmp
    rm -rf /tmp/tailscale_${version}*

    # 顯示下載完成信息。
    echo "Done!"
fi

# 運(yùn)行 Tailscale,傳遞任何給腳本的參數(shù)。
/tmp/tailscale "$@"

這句詳細(xì)解釋一下每個(gè)命令具體含義:

wget -O- https://pkgs.tailscale.com/stable/ | grep tailscale_ | head -1 | cut -d'_' -f 2

wget -O- https://pkgs.tailscale.com/stable/

  • 這個(gè)命令使用 wget 從指定的 URL 下載數(shù)據(jù)。
  • -O- 參數(shù)指示 wget 將下載的內(nèi)容輸出到標(biāo)準(zhǔn)輸出(stdout),而不是保存為文件。

| grep tailscale_

  • 通過管道(|),將 wget 的輸出傳遞給 grep 命令。
  • grep 命令搜索包含 “tailscale_” 的文本行。

| head -1

  • 再次通過管道將 grep 的輸出傳遞給 head 命令。
  • head -1 命令提取傳入數(shù)據(jù)的第一行。

| cut -d'_' -f 2

  • 最后,將 head 的輸出傳遞給 cut 命令。
  • cut 命令按照指定的分隔符(這里是下劃線 _)分割文本,并提取第二段文本(-f 2)。

3、usr/bin/tailscaled

這個(gè)腳本的主要作用是檢查并下載最新版本的 Tailscale,然后在 /tmp 目錄下運(yùn)行它。

腳本首先確定運(yùn)行它的系統(tǒng)的架構(gòu)類型,然后下載并解壓適合該架構(gòu)的 Tailscale 版本。

如果 /tmp/tailscaled 文件已存在,腳本不會(huì)執(zhí)行下載和安裝步驟。

腳本具體內(nèi)容如下:

#!/bin/sh

# 當(dāng)任何語句的執(zhí)行結(jié)果不是true時(shí)就退出腳本
set -e

# 檢查/tmp/tailscaled文件是否存在,如果不存在,則執(zhí)行后續(xù)的安裝步驟
if [ ! -f /tmp/tailscaled ]; then
    # 獲取系統(tǒng)的架構(gòu)類型
    arch=$(uname -m)
    # 如果架構(gòu)是mips,則進(jìn)一步確定是大端(be)還是小端(le)
    if [ "$arch" == "mips" ]; then
        endianness=$(echo -n I | hexdump -o | awk '{ print (substr($2,6,1)=="1") ? "le" : ""; exit }')
    # 對(duì)于其他架構(gòu)類型,進(jìn)行名稱調(diào)整以匹配 Tailscale 的要求
    elif [ "$arch" == "armv7l" ]; then
        arch=arm
    elif [ "$arch" == "aarch64" ]; then
        arch=arm64
    elif [ "$arch" == "x86_64" ]; then
        arch=amd64
    fi

    # 設(shè)置 Tailscale 的默認(rèn)版本
    tailscale_version="1.56.1"

    # 從 Tailscale 的官方網(wǎng)站獲取最新版本號(hào)
    latest_version=$(wget -O- https://pkgs.tailscale.com/stable/ | grep tailscale_ | head -1 | cut -d'_' -f 2)
    # 如果最新版本號(hào)與默認(rèn)版本號(hào)不同,則使用最新版本
    if [ "$tailscale_version" != "$latest_version" ]; then
        tailscale_version=$latest_version
    fi

    # 組合出完整的 Tailscale 版本號(hào)
    version="${tailscale_version}_${arch}${endianness}"

    # 顯示下載信息
    echo "Downloading Tailscale ${version} .."

    # 記錄要下載的文件列表
    echo -e "tailscale_${version}/tailscaled" > /tmp/tailscale_${version}_files.txt

    # 從 Tailscale 的官方網(wǎng)站下載并解壓相應(yīng)版本的 Tailscale
    wget -O- https://pkgs.tailscale.com/stable/tailscale_${version}.tgz | tar x -zvf - -C /tmp -T /tmp/tailscale_${version}_files.txt

    # 移動(dòng)解壓后的文件并清理臨時(shí)文件
    mv /tmp/tailscale_$version/* /tmp
    rm -rf /tmp/tailscale_${version}*

    # 顯示下載完成信息
    echo "Done!"
fi

# 執(zhí)行 Tailscale
/tmp/tailscaled "$@"

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論