使用JavaScript进行Telnet连接

问题描述

我正在使用Numato中继,并且尝试使用带有net.socket的javascript通过telnet与之连接,然后发送命令。

但是,当尝试连接时,它将拒绝用户名密码。问题是输入用户名后输入了奇怪的字符。

代码中,您可以看到我试图以各种方式查看输出,但是没有结果。

如果有人知道为什么或曾经使用过Numato模块,我将不胜感激。这是代码及其输出

    var net = require('net');

    var client = new net.socket();

    client.connect(23,'192.168.1.100',function() {
      console.log('Connected');
    });
    client.on('connect',function(){
      client.write('admin\n')
      client.write('admin\n')
      // client.write('admin\n' + 'admin\n')
    })

    client.on('data',function(data) {
      console.log(''+data)
      // var datos = []
      // datos.push(data)
      // datos.push(data.toJSON)
      // console.log(datos)
      // client.destroy(); // kill client after server's response
    });

    client.on('close',function() {
      console.log('Connection closed');
    });

@H_502_14@

解决方法

根据Numato documentation,此通道需要ASCII字符编码,而不是您要发送的UTF编码的字符串。

更改:

    client.on('connect',function(){
      client.write('admin\n')
      client.write('admin\n')
      // client.write('admin\n' + 'admin\n')
    })

收件人:

    client.on('connect',function(){
      client.write('admin\n','ascii')
      client.write('admin\n','ascii')
      // client.write('admin\n' + 'admin\n')
    })

注意:eol的答案也可能适用于此。如果您使用的是Windows(假设在此处),则同时需要\r\n

,

当我尝试通过NodeJS与telnet服务器通信时,我遇到了类似的问题。解决我的问题的方法是在换行符前使用回车符:

client.write('admin\r\n');