简介
最后一个 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
|