Compare commits

...

7 Commits

Author SHA1 Message Date
7cbca85a60 修复部分linux获取发行版错误的问题
Some checks failed
Compile / build (x64, windows-latest) (push) Failing after 10s
Compile / build (x64, ubuntu-latest) (push) Failing after 15s
2024-10-06 04:39:04 +08:00
ce3a07e350 修复部分linux获取发行版错误的问题 2024-10-06 04:36:54 +08:00
9160e7c4b4 修复部分linux获取发行版错误的问题 2024-10-06 04:35:07 +08:00
8e2c5c24b8 安装脚本添加本地化 2024-10-06 04:32:12 +08:00
c63d84106b 安装脚本添加本地化 2024-10-06 02:17:41 +08:00
0d7b7700de 修复脚本执行错误 2024-10-05 23:13:33 +08:00
b5bf2c1de6 修复脚本执行错误 2024-10-05 23:08:40 +08:00
4 changed files with 41 additions and 26 deletions

View File

@ -57,8 +57,8 @@ _✨ 服务器状态 - 客户端 ✨_
### 命令
- `server-status <server> <token> <id> run` - 运行客户端
- `server-status <server> <token> <id> rm` - 从服务端移除主机
- `python main.py <server> <token> <id> run` - 运行客户端
- `python.main.py <server> <token> <id> rm` - 从服务端移除主机
#### 可选项
@ -71,7 +71,7 @@ _✨ 服务器状态 - 客户端 ✨_
#### 示例
```shell
server_status https://status.liteyuki.icu 114514 myhost run -n "MyHost" --labels "标签1,标签2" --interval 5 --location "Chongqing" --link "https://example.com"
python main.py https://status.liteyuki.icu 114514 myhost run -n "MyHost" --labels "标签1,标签2" --interval 5 --location "Chongqing" --link "https://example.com"
```
## 📝 其他

View File

@ -10,40 +10,36 @@ fi
# check install dir
install_dir="/opt"
echo -n "Install directory? (default: $install_dir/server-status-client): " && read -r install_dir_input
echo -n "安装目录? (默认: $install_dir/server-status-client): " && read -r install_dir_input
if [ -n "$install_dir_input" ]; then
install_dir="$install_dir_input"
fi
# check server
echo -n "Server? (required): " && read -r server
echo -n "服务端地址? (必须): " && read -r server
if [ -z "$server" ]; then
echo "Server is required"
echo "服务端地址是必须的"
exit 1
fi
# check token
echo -n "Token? (required): " && read -r token
if [ -z "$token" ]; then
echo "Token is required"
exit 1
fi
echo -n "令牌? (必须或留空): " && read -r token
# check hostname
hostname=$(hostname)
echo -n "Hostname? (default: $hostname): " && read -r hostname_input
echo -n "此主机名? (默认: $hostname): " && read -r hostname_input
if [ -n "$hostname_input" ]; then
hostname="$hostname_input"
fi
# labels
echo -n "Labels? (space separated): " && read -r labels_input
echo -n "标签们? (空格分隔): " && read -r labels_input
if [ -n "$labels_input" ]; then
labels="$labels_input"
fi
# location
echo -n "Location? (optional): " && read -r location_input
echo -n "地理位置? (可选|自定义): " && read -r location_input
if [ -n "$location_input" ]; then
location="$location_input"
fi
@ -52,7 +48,7 @@ fi
repo2="https://git.liteyuki.icu/snowykami/server-status-client"
# try 1 if failed try 2
git clone "$repo2" "$install_dir/server-status-client"
cd "$install_dir/server-status-client" || { echo "Failed to clone repo"; exit 1; }
cd "$install_dir/server-status-client" || { echo "克隆失败"; exit 1; }
# create venv
python3 -m venv venv
@ -60,22 +56,22 @@ python_exe="./venv/bin/python"
# check if venv is created
if [ ! -f "$python_exe" ]; then
echo "Failed to create venv"
echo "创建虚拟环境失败"
exit 1
fi
echo "venv created successfully"
echo "虚拟环境创建成功"
# install the required packages
echo "Installing the required packages"
echo "正在安装依赖包..."
$python_exe -m pip install pdm -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple
$python_exe -m pdm install
# create the systemd service
echo "Creating the systemd service"
echo "正在创建服务..."
# generate random id
# shellcheck disable=SC2002
id=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1)
id=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 8 | head -n 1)
bash -c "cat <<EOF > /etc/systemd/system/server-status-client.service
[Unit]
@ -97,4 +93,4 @@ EOF"
systemctl enable server-status-client
systemctl start server-status-client
echo "server-status-client installed successfully"
echo "安装完成,服务已启动"

View File

@ -74,7 +74,7 @@ echo "Creating the systemd service"
# generate random id
# shellcheck disable=SC2002
id=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1)
id=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 8 | head -n 1)
bash -c "cat <<EOF > /etc/systemd/system/server-status-client.service
[Unit]

View File

@ -10,6 +10,24 @@ from server_status.timezone import get_timezone
excluded_partition_prefix = ("/var", "/boot", "/run", "/proc", "/sys", "/dev", "/tmp", "/snap")
os_name = "" # linux下为发行版名称windows下为Windows
os_version = "" # linux下为发行版版本windows下为Windows版本
try:
# read /etc/os-release
with open("/etc/os-release") as f:
os_release = f.read()
# 找到NAME=和VERSION=的行
for line in os_release.split("\n"):
if line.startswith("NAME="):
os_name = line.split("=")[1].replace('"', '')
elif line.startswith("VERSION_ID="):
os_version = line.split("=")[1].replace('"', '')
except FileNotFoundError:
os_name = platform.system()
os_version = platform.release()
print("Current OS:", os_name, os_version)
def log(*args):
# 在输出前加上时间
@ -29,6 +47,7 @@ def get_network_speed(interval) -> tuple[int, int]:
class Hardware:
os_release: str = ""
mem_total: int = psutil.virtual_memory().total
mem_used: int = psutil.virtual_memory().used
@ -185,10 +204,10 @@ class Client:
"id": self.client_id,
"name": self.name,
"os": {
"name": platform.system(),
"version": platform.version(),
"machine": platform.machine(),
"release": platform.release(),
"name": platform.system(), # 系统类型 linux|windows|darwin
"version": os_name + os_version, # 系统版本复杂描述 #1 SMP PREEMPT_DYNAMIC Fri Sep 13 10:42:50 UTC 2024 (5c05eeb)
"machine": platform.machine(), # 机器类型 x86_64
"release": os_version, # 系统版本
},
"labels": self.labels,
"location": self.location,