-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathServerStatus-Rust.sh
More file actions
93 lines (71 loc) · 2.5 KB
/
ServerStatus-Rust.sh
File metadata and controls
93 lines (71 loc) · 2.5 KB
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
#!/bin/bash
set -ex
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
apt-get install -y curl unzip vnstat
# get_architecture
arch=$(uname -m)
# 设置 ARCHITECTURE 变量
if [[ $arch == "aarch64" ]]; then
ARCHITECTURE="aarch64"
elif [[ $arch == "x86_64" ]]; then
ARCHITECTURE="x86_64"
else
ARCHITECTURE="unknown"
fi
OS_ARCH=$ARCHITECTURE
server_address=${1} # rust_serverstatus 服务端网址
WORKDIR=${2} # 安装目录
ssr_uid=${3} # rust_serverstatus 配置文件里的用户名
passwd=${4} # rust_serverstatus 配置文件里用户名对应的密码
alias=${5} # display name
install_server_or_not=${6} # 空着就不安装服务端
mkdir -p ${WORKDIR}
cd ${WORKDIR}
github_project="zdz/ServerStatus-Rust"
tag=$(curl -m 10 -sL "https://api.github.com/repos/$github_project/releases/latest" | grep "tag_name" | head -n 1 | awk -F ":" '{print $2}' | sed 's/\"//g;s/,//g;s/ //g')
# step 1: 下载和解压客户端
curl -L -O https://github.com/zdz/ServerStatus-Rust/releases/download/${tag}/client-${OS_ARCH}-unknown-linux-musl.zip
unzip -o "client-${OS_ARCH}-unknown-linux-musl.zip"
rm "client-${OS_ARCH}-unknown-linux-musl.zip"
# client systemd service
cat > /etc/systemd/system/stat_client.service <<EOF
[Unit]
Description=ServerStatus-Rust Client
After=network.target
[Service]
WorkingDirectory=${WORKDIR}
ExecStart=${WORKDIR}/stat_client -a "${server_address}" -g ${ssr_uid} -p ${passwd} --alias ${alias} -n
ExecReload=/bin/kill -HUP \$MAINPID
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable --now stat_client
systemctl status stat_client
# 判断是否部署服务端,不部署就直接退出
if [[ -z ${install_server_or_not} ]]; then
exit 1
fi
# 下载和解压服务端
curl -L -O https://github.com/zdz/ServerStatus-Rust/releases/download/${tag}/server-${OS_ARCH}-unknown-linux-musl.zip
unzip -o "server-${OS_ARCH}-unknown-linux-musl.zip"
rm "server-${OS_ARCH}-unknown-linux-musl.zip"
# server systemd service
cat > /etc/systemd/system/stat_server.service <<EOF
# /etc/systemd/system/stat_server.service
[Unit]
Description=ServerStatus-Rust Server
After=network.target
[Service]
WorkingDirectory=${WORKDIR}
ExecStart=${WORKDIR}/stat_server -c ${WORKDIR}/config.toml
ExecReload=/bin/kill -HUP \$MAINPID
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable --now stat_server
systemctl status stat_server