欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

openwrt中taiscale自動安裝腳本方式

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

openwrt中taiscale自動安裝腳本

一、代碼倉庫地址

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

二、代碼倉庫中腳本文件詳解

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

1、etc/init.d/tailscale

這個腳本在 OpenWRT 系統(tǒng)初始化時執(zhí)行,用于控制 Tailscale 守護進程的啟動和停止。

腳本具體內容如下:

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

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

USE_PROCD=1  # 使用 procd,OpenWRT 的進程管理守護程序。
START=99     # 設置腳本啟動的順序,數字越大越后啟動。
STOP=1       # 設置腳本停止的順序,數字越小越先停止。

# start_service 函數定義了服務啟動時的行為。
start_service() {
  procd_open_instance  # 開啟一個新的 procd 實例。
  procd_set_param command /usr/bin/tailscaled  # 設置要運行的命令(Tailscale 守護進程)。

  # 設置 Tailscale 監(jiān)聽 VPN 數據包的端口號。
  # 遠程節(jié)點將自動獲悉新端口號,但如果要設置外部防火墻規(guī)則,則可能需要配置此項。
  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  # 設置進程崩潰后自動重啟。
  procd_set_param stdout 1 # 將標準輸出重定向到系統(tǒng)日志。
  procd_set_param stderr 1 # 將標準錯誤輸出也重定向到系統(tǒng)日志。

  procd_close_instance  # 關閉 procd 實例。
}

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

2、usr/bin/tailscale

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

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

腳本具體內容如下:

#!/bin/sh

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

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

    # 設置 Tailscale 的默認版本號。
    tailscale_version="1.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" ]; then
        tailscale_version=$latest_version
    fi

    # 組合出完整的 Tailscale 版本號。
    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

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

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

# 運行 Tailscale,傳遞任何給腳本的參數。
/tmp/tailscale "$@"

這句詳細解釋一下每個命令具體含義:

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

wget -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 目錄下運行它。

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

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

腳本具體內容如下:

#!/bin/sh

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

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

    # 設置 Tailscale 的默認版本
    tailscale_version="1.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" ]; then
        tailscale_version=$latest_version
    fi

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

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

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

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

    # 移動解壓后的文件并清理臨時文件
    mv /tmp/tailscale_$version/* /tmp
    rm -rf /tmp/tailscale_${version}*

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

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

總結

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

最新評論