# client_monitor **Repository Path**: amuliang/client_monitor ## Basic Information - **Project Name**: client_monitor - **Description**: 在物联网场景下,通常不知道终端的运行状态,所以需要一个管理工具,实时监测终端设备在线状态,并能进行远程管理。 - **Primary Language**: Python - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-12-18 - **Last Updated**: 2025-07-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 介绍 在物联网场景下,通常不知道终端的运行状态,所以需要一个管理工具,实时监测终端设备在线状态,并能进行远程管理。 对终端的在线状态监测,通常有两种方式: 1. 定时任务主动向服务器发起请求,服务器收到请求后,记录终端在线状态。 2. 服务器主动向终端发起请求探测是否在线。 ## 终端主动发起请求 现在大部分网络终端都是使用的linux系统,因此本工具基于最基础的linux命令,通过定时任务主动向服务器发起请求,服务器收到请求后,记录终端在线状态。 要求终端支持的命令有 `openssl` `wget` `awk` `read` `dirname` `basename` 等 终端主动发起请求的方式对设备有一定要求,需要能够支持安装客户端;但是对网络要求低,只要终端能访问到服务器,就能进行在线状态监测。 另外,可以指定客户端所在网络的局域网IP,这样即使客户端与服务器失联,也能对局域网设备进行状态监测。当客户端重新上线后,会将这期间产生的日志上报给服务器。 ## 服务器主动探测 服务器主动探测支持PING和TCP两种方式,可以在服务端手动添加测试任务。 服务器主动探测的方式对设备要求低,但需要服务器能访问到终端。 # 运行 ## 构建服务端WEB页面 ```bash cd web npm install npm run build ``` ## 运行服务端 先安装依赖 ```bash pip3 install -r requirements.txt ``` 运行服务端程序 ```bash python3 app.py ``` 在浏览器中访问 `http://127.0.0.1:8888`,即可看到管理界面,默认用户名密码为admin/admin,登录设备后需尽快修改密码。 ## 服务端配置定时任务 定时任务中添加如下命令,即可实现每5分钟检测一次端口是否开放,开放则记录为在线,否则记录为离线。 ```bash */5 * * * * /usr/bin/python3 /root/client_monitor/port_checker.py /usr/bin/python3 8888 ``` 注意python命令需要使用绝对路径,否则会找不到命令。可以使用命令`which python3`查看python命令的绝对路径。 ## 安装客户端 登录服务端,会显示一句话客户端安装脚本。下面是对安装脚本的命令解释: ```bash server_ip=192.168.131.144 server_port=8888 # 创建脚本目录,后续运行过程产生的日志等文件都会在这个目录下 mkdir -p client_monitor # 下载脚本,并赋予执行权限 wget http://$server_ip:$server_port/client_monitor.sh -O client_monitor/client_monitor.sh chmod +x client_monitor/client_monitor.sh # 安装脚本,并指定服务器地址和端口 ./client_monitor/client_monitor.sh install $server_ip $server_port # 注册设备,会将密钥发送给服务器,作为服务器下发指令的凭据,否则服务器无法下发指令 # 对于安全性要求较高的场景,可以不进行注册,避免被恶意指令攻击 ./client_monitor/client_monitor.sh register ``` ## 卸载客户端 ```bash ./client_monitor/client_monitor.sh uninstall ``` ## 更新客户端 ```bash server_ip=192.168.131.144&&server_port=8888&&rm client_monitor.sh&&wget http://$server_ip:$server_port/client_monitor.sh && chmod +x client_monitor.sh&&./client_monitor.sh uninstall&&./client_monitor.sh install ```