用于监测光猫网络状态,并在光猫上自动拉起自定义服务端的工具。
监控光猫的网络连接状态,当检测到网络恢复或故障时,通过 Telnet 连接到光猫执行自定义命令,用于启动或恢复光猫上的服务端程序。
启动程序
↓
解析命令行参数
↓
加载配置文件 (config.json)
↓
立即执行一次恢复流程
├─ 1. 等待网络在线
├─ 2. 启用光猫 Telnet 服务
└─ 3. 通过 Telnet 执行自定义命令
↓
判断是否为守护模式 (-d)
├─ 否 → 退出程序
└─ 是 → 进入监控循环
↓
根据 --mode 选择监控方式
├─ NET 模式:监控网络接口状态变化 (每 1 秒)
│ └─ 检测到接口 UP → 执行恢复流程
├─ DHCP 模式:检测 DHCP 服务器响应 (每 10 秒)
│ └─ DHCP 检查失败 → 执行恢复流程
└─ TELNET 模式:检测 Telnet 端口连通性 (每 10 秒)
└─ 连续 3 次连接失败 → 执行恢复流程
./cmcc [选项]
选项:
--iface <IFACE> 监控的网络接口 (默认: eth0)
-d, --daemon 守护进程模式,持续监控
-c, --config <PATH> 配置文件路径 (默认: config.json)
--mode <MODE> 监控模式: net, dhcp, telnet (默认: net)
--debug 启用详细调试日志
-h, --help 显示帮助信息
-V, --version 显示版本信息- --iface: 指定要监控的网络接口名称(如 eth0, enp0s3 等)
- -d, --daemon: 启用后程序将持续运行并监控,否则只执行一次恢复后退出
- -c, --config: 指定配置文件路径,包含光猫地址、账号密码和执行命令
- --mode: 选择监控模式
net: 监控网络接口状态文件/sys/class/net/{iface}/operstatedhcp: 发送 DHCP 请求检测 DHCP 服务器响应telnet: 尝试连接 Telnet 端口 (23) 检测服务可用性
- --debug: 输出详细的调试日志,便于排查问题
创建 config.json 文件:
{
"address": "192.168.1.1",
"user": "root",
"pass": "admin",
"cmd": "echo hello",
"telnet_url": "http://192.168.1.1/cgi-bin/telnetenable.cgi"
}| 字段 | 说明 |
|---|---|
address |
光猫的 IP 地址 |
user |
Telnet 登录用户名 |
pass |
Telnet 登录密码 |
cmd |
要在光猫上执行的命令(如启动服务端程序) |
telnet_url |
启用光猫 Telnet 服务的 HTTP 接口地址 |
只执行一次恢复流程后退出:
./cmcc -c config.json./cmcc -d --mode net --iface eth0 -c config.json当网络接口从 down 变为 up 时,自动在光猫上拉起服务。
./cmcc -d --mode dhcp --iface eth0 -c config.json每 10 秒检查 DHCP 服务器,如果无响应则执行恢复。
./cmcc -d --mode telnet -c config.json每 10 秒检查光猫 Telnet 端口,连续失败 3 次后执行恢复。
./cmcc -d --mode net --iface eth0 -c config.json --debug- 网络在线检查: 循环检测公网连通性,确保本机可以访问互联网
- 启用 Telnet: 通过 HTTP 请求
telnet_url启用光猫的 Telnet 服务 - Telnet 连接: 连接到光猫的 23 端口
- 协议协商: 处理 Telnet IAC 协议协商
- 登录认证: 发送用户名和密码完成登录
- 执行命令: 执行配置文件中的
cmd命令 - 退出连接: 命令执行完成后关闭连接
| 模式 | 检测频率 | 触发条件 | 适用场景 |
|---|---|---|---|
| NET | 1 秒 | 接口状态变为 UP | 监测物理链路恢复 |
| DHCP | 10 秒 | DHCP 服务器无响应 | 监测网络协议层 |
| TELNET | 10 秒 | 连续 3 次端口不通 | 监测 Telnet 服务可用性 |