js 实现telnet
使用 Node.js 实现 Telnet 客户端
在 Node.js 中实现 Telnet 客户端可以通过 net 模块完成。net 模块提供了创建基于 TCP 的客户端和服务器的能力,Telnet 协议本质上是一个基于 TCP 的协议。
安装依赖
无需额外安装依赖,Node.js 内置 net 模块。
代码实现 以下是一个简单的 Telnet 客户端实现示例:
const net = require('net');
const readline = require('readline');
const client = new net.Socket();
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
client.connect(23, 'example.com', () => {
console.log('Connected to Telnet server');
});
client.on('data', (data) => {
console.log(data.toString());
});
client.on('close', () => {
console.log('Connection closed');
process.exit(0);
});
rl.on('line', (input) => {
client.write(input + '\r\n');
});
使用第三方库实现 Telnet
如果需要更高级的功能,可以使用第三方库如 telnet-client。
安装依赖
npm install telnet-client
代码实现
const Telnet = require('telnet-client');
const connection = new Telnet();
const params = {
host: 'example.com',
port: 23,
shellPrompt: '/ # ',
timeout: 1500
};
connection.connect(params)
.then(() => {
return connection.exec('ls');
})
.then((response) => {
console.log(response);
connection.end();
})
.catch((error) => {
console.error(error);
});
注意事项
- Telnet 协议是明文传输,安全性较低,建议在生产环境中使用 SSH。
- 某些 Telnet 服务器可能需要特定的协商选项,可以通过
telnet-client的negotiationOptions参数配置。 - 如果连接超时,检查目标服务器是否开放了 Telnet 端口(默认 23)。
扩展功能
自定义 Telnet 选项
const params = {
host: 'example.com',
port: 23,
negotiationOptions: {
will: {
echo: true,
suppressGoAhead: true
}
}
};
处理特殊字符

client.on('data', (data) => {
const str = data.toString()
.replace(/\xff\xfd\x06/g, '') // 过滤 Telnet 控制字符
.replace(/\r\n/g, '\n');
console.log(str);
});
以上方法提供了在 Node.js 中实现 Telnet 客户端的基本方案,可以根据实际需求进行调整和扩展。






