攻克贝尔吉比特G-120W-B光猫:从Telnet到Crontab的自动化运维实战
1. 破解贝尔吉比特G-120W-B光猫的Telnet入口
家里那台2017年的贝尔吉比特G-120W-B光猫最近总是莫名其妙卡顿,刷个视频都要转圈半天。作为技术宅,我决定给它来个"大保健"——设置自动重启功能。这个看似简单的需求,却让我在嵌入式Linux系统里摸爬滚打了整整三天。
首先要解决的是管理员权限问题。普通用户界面就像个"笼子",根本找不到定时任务的设置入口。好在老款光猫还保留着Telnet这个"后门"。在浏览器地址栏输入http://192.168.1.1/system.cgi?telnet(注意把IP换成你的光猫地址),页面会显示一个简陋的Telnet开关。打开后用PuTTY连接,熟悉的命令行界面终于出现了!
登录时有个坑要注意:默认的telecomadmin账号密码可能被运营商修改过。我通过vi /configs/config.xml查到了真实密码(XML里搜索password字段)。这个操作就像在迷宫墙上凿了个洞,瞬间获得了系统最高权限。不过要提醒的是,修改系统文件前一定要备份,我吃过手滑误删配置的亏。
2. 嵌入式Linux系统的"断头路"探索
本以为拿到root权限就万事大吉,结果刚执行crontab -e就给我当头一棒——系统居然报错说/var/spool/cron/crontabs目录不存在!这就像给你车钥匙却发现停车场被拆了。手动创建目录后,定时任务确实能临时生效,但光猫重启后这个目录就像被施了魔法般消失无踪。
经过反复测试发现两个关键点:
- 这个光猫使用的是裁剪版的OpenWRT系统,很多标准Linux功能都被阉割了
- 系统每次启动都会还原
/var目录,就像电脑开了还原卡
用mount命令检查时更让人困惑:明明/configs目录是可写的,为什么/var就这么特殊?后来在/etc/fstab里发现玄机——/var被挂载为tmpfs,这种内存文件系统当然不会持久化。这就解释了为什么新建的crontab目录总是"见光死"。
3. 破解系统自启动机制的"俄罗斯套娃"
既然系统要清除/var,那我就让它在每次启动时自动重建所需文件。听起来简单,但在嵌入式设备上却像在玩解谜游戏:
- 首先尝试在
/etc/init.d/rcS添加脚本——无效 - 然后测试
/etc/rc.local——根本不存在这个文件 - 最后在
/etc/init.d/syslogd里发现了曙光,这个日志服务脚本会在启动时执行
我的解决方案是编写一个"套娃脚本":
#!/bin/sh # /configs/myconfig.sh mkdir -p /var/spool/cron/crontabs cp -p /etc/crontabs/root /var/spool/cron/crontabs/ chmod 600 /var/spool/cron/crontabs/root crond -c /var/spool/cron/crontabs然后把这个脚本的调用命令/configs/myconfig.sh插入到syslogd文件的合适位置。这里有个细节:必须确保插入点在服务启动完成之后,否则可能遇到依赖问题。
4. 定时任务设置的"防坑指南"
实际设置crontab时又遇到新问题:这个裁剪版crond居然不支持@reboot参数!只能老老实实用传统的时间表达式。我的最终配置是这样的:
# /etc/crontabs/root 30 4 * * * /sbin/reboot选择凌晨4:30重启是因为这时候家里没人用网。这里分享几个血泪教训:
- 时区问题:光猫默认可能是UTC时间,要先用
date命令确认时区 - 日志查看:
logread | grep cron可以查看定时任务执行记录 - 权限控制:
crontabs目录权限必须设为700,否则crond会拒绝执行
测试阶段建议先用* * * * * /bin/date > /tmp/test.log这样的每分钟任务验证基础功能,等确认整套机制稳定后再改成真正的重启命令。
5. 系统健壮性优化的"组合拳"
完成基础功能后,我又做了几个增强方案:
- 双保险机制:在
/configs/下存放备份脚本,即使myconfig.sh被误删也能快速恢复 - 运行监控:添加
pgrep crond || /configs/myconfig.sh到定时任务,防止crond进程意外退出 - 安全加固:修改默认Telnet端口并设置防火墙规则,避免暴露管理接口
特别提醒:操作前建议拔掉光纤线,我有次误操作导致光猫配置重置,不得不重新注册OLT,过程相当痛苦。另外修改系统文件时尽量使用sed -i代替直接vi编辑,避免因终端异常导致文件损坏。
折腾完这套系统后,光猫运行稳定得像换了新机器。最意外的是WiFi信号强度都提升了——估计是长期运行积累的缓存问题被彻底解决了。这套方法虽然针对特定型号,但解决问题的思路对各类嵌入式设备都适用:理解系统机制、寻找持久化存储点、利用现有服务实现自启动。
