【问题标题】:Telnet connection with JavaScript使用 JavaScript 的 Telnet 连接
【发布时间】:2021-02-18 14:47:07
【问题描述】:

我正在使用 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');
    });

【问题讨论】:

  • 无疑是字符编码问题。您正在发送 UTF-16 - Numato 期待什么?

标签: javascript node.js telnet adonis.js


【解决方案1】:

根据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

【讨论】:

  • 嗨兰迪,非常感谢您的帮助。尝试了您的建议,并在全球范围内修改了“setEncoding”。此外,我尝试了消息和全局编码的所有可能编码组合,并更改了回车符 (\r\n)。在输出中只有字符发生了变化,但它们仍然是侵入性字符。我想问题一定很小,我看不到。
【解决方案2】:

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

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

【讨论】:

  • 这如何解释 OP 指出并显示在图像中的“奇怪的字符”。
  • 可能是因为不正确的行尾导致发送的数据被误解,在我的情况下几乎相同。但是当然 - 编码可能是一个问题,就像你写的一样..
  • 您好,Eol,感谢您的建议。我试过了,但结果是一样的。我一直在调查。
猜你喜欢
  • 2010-10-28
  • 2011-02-23
  • 1970-01-01
  • 2011-12-07
  • 2018-03-26
  • 2011-05-30
  • 2014-01-08
  • 2012-03-19
  • 1970-01-01
相关资源
最近更新 更多