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

在小米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 &

相关文章:

  • LangChain调用自定义工具
  • 【读点论文】What’s Really New with NewSQL?
  • SEO关键词长尾词高效策略
  • redisson 使用与分析
  • C语言入门教程100讲(34)结构体初始化
  • RISC-V: 固件与操作系统引导 | eg OpenSBI | 借助AI注释项目代码
  • Java架构师成长之路
  • llama源码学习·model.py[3]ROPE旋转位置编码(2)旋转角度生成代码
  • vue-cli如何正确关闭prefetch和preload
  • 让S7-1200与DeepSeek联动(转)
  • MCU vs SoC
  • vue3 UnwrapRef 与 unref的区别
  • [极客大挑战 2019]BuyFlag-3.23BUUCTF练习day5(3)
  • LeetCode HOT100系列题解之岛屿数量(10/100)
  • 【Keil5-开发技巧】
  • VSCode 生成HTML 基本骨架
  • 【CICD】Ansible知识库
  • 【MySQL数据库】触发器与事件
  • 从失衡到平衡:手撕 AVL 树的插入旋转操作
  • Cursor 一键自动无限续杯(3月24日)亲测有效
  • 俄外长与美国务卿通电话,讨论俄美接触等问题
  • 著名文博专家吴远明因交通事故离世,享年75岁
  • 上海老字号卖黄金,与动漫IP联名两周销售额近亿元
  • 淄博一酒店房间内被曝发现摄像头,当地警方已立案调查
  • 美F-35险被胡塞武装击中,损失增大让行动成“烂尾仗”
  • 晋级四强!WTA1000罗马站:郑钦文2比0萨巴伦卡