这里有一台只能通过telnet进行控制的特殊设备,我已经做了一段时间了(通过PuTTy或Terminal)。
在NodeJS中,我创建了一个Web界面,可以更轻松地控制设备。我通过为通过telnet发送的不同命令运行不同的bash脚本来做到这一点。这样做很好,但是感觉太杂乱无章,更不用说每个命令的shell脚本了。我正在寻找一种更好的方法。
我想到直接从NodeJS连接到telnet服务器。我尝试了不同的程序包(即net,telnet客户端,telnet流,另一个telnet客户端等),但这不是我需要的那些工具,或者我只是没有正确实现它。
这是我正在使用telnet-client软件包测试的示例代码(其他仅为此示例的变体):
const telnet = require('telnet-client');
const server = new telnet();
// display server response
server.on("data", function(data){
console.log(''+data);
});
// login when connected
server.on("connect", function(){
server.write("login <user> <pass>");
});
// connect to server
server.connect({
host: "172.16.0.1",
port: 9600
});
Run Code Online (Sandbox Code Playgroud)
手动完成后,在“登录”请求之后,我应该看到“登录成功”消息,但是我什么也没回来。
该代码不正确吗?我不熟悉telnet,非常感谢您的帮助。
我正在尝试通过该write功能从特定请求中获得响应。
我通过net模块连接到设备(这是与之通信的唯一方式)。目前,我正在.on('data',function)听取上述设备的回应。我可以通过write我期望收到一行响应的函数发送命令。我该怎么做呢?
当前代码:
server = net.Socket();
// connect to server
server.connect(<port>,<ip>,()=>{
console.log("Connected to server!");
});
// log data coming from the server
server.on("data",(data)=>{
console.log(''+data);
});
// send command to server
exports.write = function(command){
server.write(command+"\r\n");
};
Run Code Online (Sandbox Code Playgroud)
这是一个工作代码。通过向设备发送命令会server.write返回一个现在只出现在终端中的响应。我想在write请求后立即返回该响应。最好在exports.write函数内。