哪吒探针v0版之serv00

简介

最后一个 v0 版本截止到 v0.20.5

地址:https://github.com/nezhahq/agent/releases/tag/v0.20.5

准备

下载

1
wget -O nezha-agent.zip https://github.com/nezhahq/agent/releases/download/v0.20.5/nezha-agent_freebsd_amd64.zip

解压文件

1
2
mkdir -p $HOME/.nezha/agent
unzip nezha-agent.zip -d $HOME/.nezha/agent

赋予运行权限

1
chmod +x $HOME/.nezha/agent/nezha-agent

启动

如果没有面板使用 tls,需要将 “–tls” 删除

编写启动脚本

1
vim $HOME/.nezha/agent/start.sh

修改下面的内容后保存

1
2
#!/bin/sh
nohup $HOME/.nezha/agent/nezha-agent "-s" "面板域名或者ip:端口" "-p" "服务器密钥" "--tls" > $HOME/.nezha/agent/nezha-agent.log 2>&1 &
1
chmod +x $HOME/.nezha/agent/start.sh

启动

1
$HOME/.nezha/agent/start.sh

一键脚本

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
#!/bin/sh

# 定义变量
NEZHA_AGENT_DIR="$HOME/.nezha/agent"
NEZHA_AGENT_EXECUTABLE="$NEZHA_AGENT_DIR/nezha-agent"
NEZHA_START_SCRIPT="$NEZHA_AGENT_DIR/start.sh"
NEZHA_LOG_FILE="$NEZHA_AGENT_DIR/nezha-agent.log"

# 默认值,可以被 curl 覆盖
PANEL_ADDRESS="面板域名或者ip:端口"
SERVER_KEY="服务器密钥"

# 函数:启动哪吒探针
start_nezha_agent() {
  echo "启动哪吒探针..."
  nohup "$NEZHA_AGENT_EXECUTABLE" "-s" "$PANEL_ADDRESS" "-p" "$SERVER_KEY" "--tls" > "$NEZHA_LOG_FILE" 2>&1 &
  echo "哪吒探针已在后台启动,日志文件:$NEZHA_LOG_FILE"
}

# 函数:停止哪吒探针
stop_nezha_agent() {
  echo "停止哪吒探针..."
  # 查找哪吒探针的进程 ID 并杀死它
  PID=$(ps aux | grep "$NEZHA_AGENT_EXECUTABLE" | grep -v grep | awk '{print $2}')
  if [ -n "$PID" ]; then
    kill -9 "$PID"
    echo "哪吒探针进程 (PID: $PID) 已被杀死。"
  else
    echo "没有找到正在运行的哪吒探针进程。"
  fi
}


# 函数:处理 curl 请求
handle_curl_request() {
  if [ -n "$1" ]; then
    case "$1" in
      panel_address)
        PANEL_ADDRESS="$2"
        echo "面板地址已更新为: $PANEL_ADDRESS"
        ;;
      server_key)
        SERVER_KEY="$2"
        echo "服务器密钥已更新"
        ;;
      start)
        start_nezha_agent
        ;;
      stop)
        stop_nezha_agent
        ;;
      restart)
        stop_nezha_agent
        sleep 2 # 等待进程结束
        start_nezha_agent
        ;;
      *)
        echo "无效的参数: $1"
        echo "用法: curl 'http://<服务器IP>:<端口>?panel_address=你的面板地址&server_key=你的密钥&start'"
        echo "     curl 'http://<服务器IP>:<端口>?stop'"
        echo "     curl 'http://<服务器IP>:<端口>?restart'"
        exit 1
        ;;
    esac
  else
    echo "没有提供参数。"
    echo "用法: curl 'http://<服务器IP>:<端口>?panel_address=你的面板地址&server_key=你的密钥&start'"
    echo "     curl 'http://<服务器IP>:<端口>?stop'"
    echo "     curl 'http://<服务器IP>:<端口>?restart'"
    exit 1
  fi
}


# 创建目录(如果不存在)
mkdir -p "$NEZHA_AGENT_DIR"

# 创建启动脚本
cat > "$NEZHA_START_SCRIPT" <<EOL
#!/bin/sh
nohup "$NEZHA_AGENT_EXECUTABLE" "-s" "$PANEL_ADDRESS" "-p" "$SERVER_KEY" "--tls" > "$NEZHA_LOG_FILE" 2>&1 &
EOL

# 赋予执行权限
chmod +x "$NEZHA_START_SCRIPT"

# 检查是否需要处理 curl 请求
if [ -n "$QUERY_STRING" ]; then
  # 解析 QUERY_STRING
  IFS='&' read -r -a PARAMS <<< "$QUERY_STRING"
  for PARAM in "${PARAMS[@]}"; do
    IFS='=' read -r KEY VALUE <<< "$PARAM"
    case "$KEY" in
      panel_address)
        PANEL_ADDRESS="$VALUE"
        ;;
      server_key)
        SERVER_KEY="$VALUE"
        ;;
      action)
        ACTION="$VALUE"
        ;;
    esac
  done

  # 根据 action 调用相应的函数
  case "$ACTION" in
    start)
      start_nezha_agent
      ;;
    stop)
      stop_nezha_agent
      ;;
    restart)
      stop_nezha_agent
      sleep 2
      start_nezha_agent
      ;;
    *)
      echo "无效的 action: $ACTION"
      exit 1
      ;;
  esac

else

  # 如果没有 curl 请求,则默认启动哪吒探针
  start_nezha_agent

fi

exit 0
网站总访客数:Loading
网站总访问量:Loading
使用 Hugo 构建
主题 StackJimmy 设计
-->