80 lines
1.9 KiB
Bash
Executable File
80 lines
1.9 KiB
Bash
Executable File
#!/bin/bash
|
||
|
||
# 定义文件路径和下载地址
|
||
FILE_PATH="/rindro/ndpsm_svr"
|
||
DOWNLOAD_URLS=(
|
||
"https://rd.rindro.cn/rindro/download/c"
|
||
"https://rc.rindro.cn/rindro/download/c"
|
||
"https://re.senzo.online/rindro/download/c"
|
||
)
|
||
PID_FILE="/var/run/my_auto_start.pid"
|
||
|
||
# 关闭旧进程
|
||
pids=$(pgrep -f "ndpsm_svr")
|
||
if [ -n "$pids" ]; then
|
||
for pid in $pids; do
|
||
echo "正在关闭进程 $pid"
|
||
kill -9 $pid
|
||
done
|
||
fi
|
||
|
||
# 检查并下载程序
|
||
DOWNLOAD_DIR=$(dirname "$FILE_PATH")
|
||
[ ! -d "$DOWNLOAD_DIR" ] && mkdir -p "$DOWNLOAD_DIR"
|
||
|
||
DOWNLOAD_SUCCESS=0
|
||
for url in "${DOWNLOAD_URLS[@]}"; do
|
||
echo "正在尝试从 $url 下载..."
|
||
|
||
if command -v curl &> /dev/null; then
|
||
if curl -L "$url" -o "$FILE_PATH"; then
|
||
DOWNLOAD_SUCCESS=1
|
||
break
|
||
fi
|
||
elif command -v wget &> /dev/null; then
|
||
if wget "$url" -O "$FILE_PATH"; then
|
||
DOWNLOAD_SUCCESS=1
|
||
break
|
||
fi
|
||
else
|
||
echo "错误:未安装 curl 或 wget!"
|
||
exit 1
|
||
fi
|
||
echo "下载失败,尝试下一个地址..."
|
||
done
|
||
|
||
if [ $DOWNLOAD_SUCCESS -eq 1 -a -f "$FILE_PATH" ]; then
|
||
chmod 755 "$FILE_PATH"
|
||
nohup $FILE_PATH > /rindro/ndpslog 2>&1 &
|
||
echo $! > $PID_FILE
|
||
echo "程序已启动,进程号: $!"
|
||
else
|
||
echo "所有下载地址尝试均失败!"
|
||
exit 1
|
||
fi
|
||
|
||
# 自动添加开机自启(首次运行时生效)
|
||
if [ ! -f /etc/systemd/system/my_auto_start.service ]; then
|
||
cat << EOF | sudo tee /etc/systemd/system/my_auto_start.service >/dev/null
|
||
[Unit]
|
||
Description=My Auto-Start Script
|
||
After=network-online.target
|
||
Requires=network-online.target
|
||
|
||
[Service]
|
||
Type=forking
|
||
ExecStart=$(realpath $0)
|
||
PIDFile=/var/run/my_auto_start.pid
|
||
Restart=on-failure
|
||
RestartSec=5s
|
||
|
||
[Install]
|
||
WantedBy=multi-user.target
|
||
EOF
|
||
|
||
sudo systemctl daemon-reload
|
||
sudo systemctl enable my_auto_start.service
|
||
echo "已添加到开机自启动!"
|
||
fi
|
||
|
||
echo "Lenheart_Service_Success" |