|
前置条件:
1.光猫开了telnet
2.可以通过telnet进入shell,并且能执行
3.一台可以执行定时任务的设备,并且可以telnet连接光猫
原理:
用脚本模拟登入光猫的shell,kill内存泄漏的进程(在我的光猫上是ctrg_m)
步骤:
在我的网络环境里,是在光猫下挂了一台跑Ubuntu系统的小主机,我在这台小主机上部署了青龙面板,通过青龙面板定时执行以下脚本(论坛的代码编辑器不好用,请自行格式化)
- const net = require('net');
- // 定义主机和端口
- const HOST = '192.168.100.1'; // 光猫telnet ip
- const PORT = 23; // 光猫telnet 端口号,默认是23
- // 定义 wait 函数
- function wait(ms) {
- return new Promise(resolve => setTimeout(() => resolve(), ms));
- }
- // 定义 Telnet 连接函数
- async function telnetCommands() {
- try {
- // 创建一个 TCP socket 连接到 Telnet 服务器
- const socket = net.createConnection({ host: HOST, port: PORT });
- // 监听来自 Telnet 服务器的数据
- socket.on('data', (data) => {
- console.log(data.toString());
- });
- // 发送命令序列到 Telnet 服务器
- await wait(1000);
- // telnet用户名
- socket.write('root');
- socket.write('\n');
- await wait(1000);
- // telnet密码
- socket.write('adminHW');
- socket.write('\n');
- await wait(1000);
- // 打开shell
- socket.write('su\n');
- await wait(1000);
- socket.write('shell\n');
- await wait(2000);
- // 查看ctrg_m进程信息
- socket.write('echo $(ps | grep [c]trg)\n');
- await wait(2000);
- // 杀掉内存泄漏的进程
- socket.write('killall -9 ctrg_m\n');
- await wait(3000);
- // 查看ctrg_m进程信息
- socket.write('echo $(ps | grep [c]trg)\n');
- await wait(2000);
- // 退出
- socket.write('exit\n');
- await wait(1000);
- socket.write('quit\n');
- await wait(1000);
- socket.write('quit\n');
- // 处理 Telnet 连接的关闭
- socket.on('close', () => {
- console.log('Disconnected from Telnet server');
- });
- } catch (error) {
- console.error('Telnet connection error:', error);
- }
- }
- // 执行 Telnet 连接函数
- telnetCommands();
复制代码
|
|