Serv00 - SSH登录 + Alist保活

思路:利用 Crontab 定时登录 SSH 和检测 Alist 服务是否可用。

下列脚本路径以用户名 user01 为例,涉及 用户名 | 密码改成自己的,灵活变通。

1. ssh登录:auto-ssh.sh

路径:~/domains/script/auto-ssh.sh

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#!/bin/bash

# 设置脚本路径
WORK_DIR="/home/user01/domains/script/"
LOG_FILE="$WORK_DIR/auto-ssh_log.txt"

# 检查并创建工作目录日志文件
mkdir -p "$WORK_DIR"
touch "$LOG_FILE"

# SSH 登录验证
sshpass -p '密码' ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -tt 用户名@s7.serv00.com "exit"
if [ $? -ne 0 ]; then
echo "SSH login failed at $(date)" >> "$LOG_FILE"
echo "" >> "$LOG_FILE"
exit 1
else
echo "SSH login succeeded at $(date)" >> "$LOG_FILE"
echo "" >> "$LOG_FILE"
fi

2. alist服务保活:restart.sh

路径:~/domains/alist

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
#!/bin/bash

# 设置脚本路径
SCRIPT_PATH="/home/user01/domains/alist/alist"
WORK_DIR="/home/user01/domains/alist"
LOG_FILE="$WORK_DIR/restart_log.txt"

# 检查并创建工作目录日志文件
mkdir -p "$WORK_DIR"
touch "$LOG_FILE"

# 函数用于记录日志到文件和控制台
log() {
echo "$1" | tee -a "$LOG_FILE"
}

# 检查参数
case "$1" in
stop)
# 停止 alist 服务
if pgrep -f './alist server' > /dev/null; then
cd "$WORK_DIR"
pkill -f './alist server'
log "Stopped alist server at $(date)"
else
log "alist server is not running at $(date)"
fi
;;
start)
# 启动 alist 服务
if ! pgrep -f './alist server' > /dev/null; then
cd "$WORK_DIR"
nohup ./alist server > /dev/null 2>&1 &
log "Started alist server at $(date)"
else
log "alist server is already running at $(date)"
fi
;;
restart)
# 重启 alist 服务
if pgrep -f './alist server' > /dev/null; then
cd "$WORK_DIR"
pkill -f './alist server'
log "Stopped alist server at $(date)"
sleep 2 # 等待服务完全停止
fi
cd "$WORK_DIR"
nohup ./alist server > /dev/null 2>&1 &
log "Started alist server at $(date)"
;;
*)
log "Usage: $0 {start|stop|restart}"
exit 1
;;
esac

# 添加空行以提高日志可读性
echo "" >> "$LOG_FILE"

3. 添加 cron 任务

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
crontab -e
进入编辑,自己定规则,例如每个月1151:19和重启时候登录 ssh;每天 1:30 和每隔3小时的0分执行一次 alist 保活

19 1 1 * * /usr/bin/env TZ=Asia/Shanghai ~/domains/script/auto-ssh.sh >/dev/null 2>&1
19 1 15 * * /usr/bin/env TZ=Asia/Shanghai ~/domains/script/auto-ssh.sh >/dev/null 2>&1
@reboot /usr/bin/env TZ=Asia/Shanghai ~/domains/script/auto-ssh.sh >/dev/null 2>&1

30 1 * * * /usr/bin/env TZ=Asia/Shanghai ~/domains/alist/restart.sh restart >/dev/null 2>&1
0 */3 * * * /usr/bin/env TZ=Asia/Shanghai ~/domains/alist/restart.sh start >/dev/null 2>&1
@reboot /usr/bin/env TZ=Asia/Shanghai ~/domains/alist/restart.sh start >/dev/null 2>&1

ctrl+o,再回车保存
ctrl+x 退出编辑

crontab -l 查看列表

Serv00 - SSH登录 + Alist保活
http://example.com/2024/08/16/Serv00-折腾-SSH登录-Alist保活/
作者
Ken
发布于
2024年8月16日
许可协议