当前位置: 首页 > article >正文

在小米AX6000中添加tailscale monitor

经过测试,发现小米路由器中的tailscale可能会因为某种原因状态异常,
为了让tailscale恢复正常,所以又写了monitor用来监控:

#!/bin/sh

# Define Tailscale related paths
TAILSCALED_PATH="/tmp/tailscale/tailscale_1.80.3_arm/tailscaled"
TAILSCALE_PATH="/tmp/tailscale/tailscale_1.80.3_arm/tailscale"
LOG_DIR="/etc/tailscale"
LOG_FILE="$LOG_DIR/tailscale_monitor.log"
LOOP_TIME=600

# Create log directory
mkdir -p "$LOG_DIR"

# Function: Log messages
log() {
    echo "$1"
    echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" >> "$LOG_FILE"
}

# Function: Check and start Tailscale
start_tailscale() {
    "$TAILSCALE_PATH" up --advertise-routes=192.168.0.1/24 >> "$LOG_FILE" 2>&1 &
    if [ $? -eq 0 ]; then
        log "Tailscale started successfully."
    else
        log "Failed to start Tailscale."
    fi
}

# Function: Check and start Tailscaled
start_tailscaled() {
    if [ -z "$(pgrep -f "$TAILSCALED_PATH")" ]; then
        log "Tailscaled is not running, starting..."
        "$TAILSCALED_PATH" >> "$LOG_FILE" 2>&1 &
        if [ $? -eq 0 ]; then
            log "Tailscaled started successfully."
            start_tailscale
        else
            log "Failed to start Tailscaled."
        fi
    else
        log "Tailscaled is already running."
    fi
}

# Function: Check Tailscale status
check_tailscale_status() {
    log "Checking Tailscale status..."
    STATUS=$("$TAILSCALE_PATH" status 2>&1)
    log "$STATUS"
    if echo "$STATUS" | grep "xiaomi-ax6000"; then
        log "Device xiaomi-ax6000 found."
        LINE=$(echo "$STATUS" | grep "xiaomi-ax6000")
        FOURTH_FIELD=$(echo "$LINE" | awk '{print $5}')
        if [ "$FOURTH_FIELD" = "offline" ]; then
            log "Device xiaomi-ax6000 is offline, restarting Tailscale..."
            #pkill -f "$TAILSCALE_PATH"
            start_tailscaled
        else
            rm $LOG_FILE
            log "Device xiaomi-ax6000 status is normal: $FOURTH_FIELD"
        fi
    elif echo "$STATUS" | grep "Tailscale is stopped"; then
        log "Tailscale is stopped"
        "$TAILSCALE_PATH" up
    else
        log "Device xiaomi-ax6000 not found."
        start_tailscale
    fi
}

# Main logic
while true; do
    log "Starting Tailscale status check..."
    start_tailscaled
    #start_tailscale
    check_tailscale_status
    log "Check completed."
    log "Waiting for $LOOP_TIME(sec)..."
    sleep $LOOP_TIME  # Sleep for 5 minutes (300 seconds)
done

同时也可以加入到/etc/tailscale/tailscale_install.sh 小米AX6000上安装tailscale
放在最下面

/etc/tailscale/tailscale_monitor.sh &

http://www.kler.cn/a/597967.html

相关文章:

  • JavaScript-作用域、函数进阶、解构赋值、filter详解
  • Jboss
  • SSM社区生活超市管理
  • Powershell WSL Windows系统复制数据到ubuntu子系统系统
  • 嵌入式硬件篇---蓝牙模块
  • 群体智能优化算法-模拟退火优化算法(Simulated Annealing, SA,含Matlab源代码)
  • 【Keil5-开发技巧】
  • 华为昇腾AscendCL推理引擎入门
  • 【中文翻译】第8章-The Algorithmic Foundations of Differential Privacy
  • MCP(Model Context Protocol)好比大模型外挂!
  • 原生微信小程序基础语法--快速总结
  • (自用)在派上设置自启动时的问题
  • 第二十一章:模板与继承_《C++ Templates》notes
  • C# 反射(Reflection)详解
  • 把 ASP.NET Core 服务(BigDogServer)部署到 Linux 并作为服务运行
  • CentOS 7的下载与安装
  • Linux网络相关概念和重要知识(2)(UDP套接字编程、聊天室的实现、观察者模式)
  • FPGA学习(二)——基于DE2-115开发板的LED流水灯设计
  • 微调大模型:LoRA、PEFT、RLHF 简介
  • HTML图像