39 lines
1.8 KiB
Markdown
39 lines
1.8 KiB
Markdown
### 程序运行
|
||
|
||
1. 用户需先向程序config内添加以下几项定义量:
|
||
ACCOUNT,API_KEY,WAY
|
||
|
||
2. 用户运行install.sh脚本
|
||
脚本会先检测config.yml中的配置文件
|
||
缺少ACCOUNT,API_KEY,WAY向用户询问填写什么,同时WAY默认为ping(问句以红色展示)
|
||
若用户填写http,则让用户填写域名(可以访问的路径),通过英文逗号分隔域名
|
||
随后用户可添加例外参数,脚本检测到例外内的IP主机关机时,直接跳过,不进行开机
|
||
|
||
3. 脚本运行
|
||
创建名为idc_monitor的systemd服务,持续化运行当前路径下的main.py
|
||
|
||
### 程序逻辑
|
||
1. 1. 隔一段时间(SPAN)便根据WAY来探测目标存活
|
||
若为ping,则直接ping一遍所有的IP地址
|
||
若为域名,则使用HEAD方法探测相应域名是否正常响应
|
||
|
||
1. 2. 若存在不通的情况,进行如下操作
|
||
使用config.yml中的JWT请求VPS列表并挨个查询VPS状态是否为on(开机)
|
||
若返回响应码为405,即响应报文为
|
||
```
|
||
{
|
||
"status": 405,
|
||
"msg": "请登陆后再试"
|
||
}
|
||
```
|
||
时,重新请求JWT并存储,随后再次请求VPS列表并查询状态
|
||
|
||
1. 3. 若均为开机状态,记录日志:什么时间点 - 发生了什么情况,实际没有机器关机,可能是禁ping或者服务器网站状态异常
|
||
|
||
1. 4. 若发现有机器关机,则使用开机接口(on)进行开机
|
||
|
||
1. 5. 所有机器都操作完成后隔60秒,再次查询刚才尝试开机操作的几台机器是否开机成功,若不超过则再来一遍
|
||
|
||
1. 6. 尝试开机操作两次后还是非开机状态,则中断本次循环,进入SPAN间隔准备下一次循环
|
||
|
||
1. 7. 以上所有操作均需记录为日志,分为正常日志和异常日志(例如:未发现存在机器关机,开机失败等) |