Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Telnet连接到Linux提示符_Linux_Arduino - Fatal编程技术网

使用Telnet连接到Linux提示符

使用Telnet连接到Linux提示符,linux,arduino,Linux,Arduino,我有一个Arduino和以太网屏蔽编码来创建一个简单的串行到telnet客户端。这适用于将串行终端程序连接到Telnet BBS类型的系统,例如使用端口23在BBS.thebytexchange.com上的系统 当我使用同一个客户端与我的拱形盒进行通信时,它连接正常,但是,我立即从拱形盒接收到5个字节,所有操作都停止。无论我向拱形盒子发送什么,都不会返回任何内容。 五个字节(十六进制)如下所示。18 20 23 27 24. 如果我连接到运行Raspian的Raspberry Pi,我会返回四个

我有一个Arduino和以太网屏蔽编码来创建一个简单的串行到telnet客户端。这适用于将串行终端程序连接到Telnet BBS类型的系统,例如使用端口23在BBS.thebytexchange.com上的系统

当我使用同一个客户端与我的拱形盒进行通信时,它连接正常,但是,我立即从拱形盒接收到5个字节,所有操作都停止。无论我向拱形盒子发送什么,都不会返回任何内容。 五个字节(十六进制)如下所示。18 20 23 27 24. 如果我连接到运行Raspian的Raspberry Pi,我会返回四个字节(18202327),并且有相同的症状

我很高兴每个Telnet服务器都运行良好,因为我可以使用标准Telnet应用程序从我的Mac使用Telnet连接并登录到这两个盒子,并且我还可以在每台机器上使用Telnet连接到localhost。我很高兴串行到Telnet Arduino很好,因为我可以使用串行终端(任何)到internet Telnet资源进行Telnet,但是,当连接到Linux登录提示符时,我显然遗漏了一些东西,有什么想法吗

问候

约翰

更新:进一步的调查表明,我看到的是服务器试图让我协商一些选项。我看到的每个字节前面都有FF(最初没有注意到这一点,因为FF被从监控中过滤掉)。字节是Telnet协议的一部分,表示以下内容:

  • FF FD 18注销
  • FF FD 20数据输入终端
  • FF FD 27输出标记
  • FF FD 24端子类型
现在的问题是,我该如何回答这个问题?

在的帮助下,我发现了所需的方法,因此将回答我自己的问题

如前所述,从Telnet服务器接收到的序列是服务器尝试协商连接的一些选项。这些选项旨在增强每端网络虚拟终端(NVT)的默认配置。这些选项请求只需按照建议进行确认

该流程的定义清楚地表明,我应该用WILL或WONT响应DO请求,用DO或not响应WILL请求

在我的情况下,我不需要这些增强功能,因为我对连接的默认NVT很满意。因此,为了进入Linux登录提示符,我用一个WONT响应每个DO请求,例如

收到以下DO请求时(FD表示选项18的DO)

我以惯常的回应回应(由FC表示)

同样,如果我收到遗嘱请求(FB)

我将返回一个DONT(FE)

我希望这有帮助。

在的帮助下,我发现了所需的方法,因此将回答我自己的问题

如前所述,从Telnet服务器接收到的序列是服务器尝试协商连接的一些选项。这些选项旨在增强每端网络虚拟终端(NVT)的默认配置。这些选项请求只需按照建议进行确认

该流程的定义清楚地表明,我应该用WILL或WONT响应DO请求,用DO或not响应WILL请求

在我的情况下,我不需要这些增强功能,因为我对连接的默认NVT很满意。因此,为了进入Linux登录提示符,我用一个WONT响应每个DO请求,例如

收到以下DO请求时(FD表示选项18的DO)

我以惯常的回应回应(由FC表示)

同样,如果我收到遗嘱请求(FB)

我将返回一个DONT(FE)


我希望这会有所帮助。

通过打开telnet二进制文件的套接字级调试,您可以了解有关错误的更多信息。使用
telnet-d
或在telnet会话类型
toggle debug
中启用和禁用调试。如问题中所述,使用telnet时没有错误。当连接到Telnet BBS时,我自制的Telnet客户端工作正常,但是,当连接到Linux登录时,我得到了如上所述的响应。我认为这是我没有处理的某种应用程序协议。通过快速搜索,您似乎可以使用
不会
回复来响应服务器的任何请求,即服务器:
0xFF xx
->您:
0xFF 0xFC xx
。请参见,例如,是否过滤掉了其他字节?我认为来自服务器的每条消息中都应该有第三个字节,模式为
IAC,
,其中
表示需要发送哪种响应(
)。另一个来源:我的错,我这边的一个打字错误。。。这些序列都是三个字节的DO序列。我已经用正确的接收字节序列更新了问题。通过打开telnet二进制文件的套接字级调试,您可以了解有关错误的更多信息。使用
telnet-d
或在telnet会话类型
toggle debug
中启用和禁用调试。如问题中所述,使用telnet时没有错误。当连接到Telnet BBS时,我自制的Telnet客户端工作正常,但是,当连接到Linux登录时,我得到了如上所述的响应。我认为这是我没有处理的某种应用程序协议。通过快速搜索,您似乎可以使用
不会
回复来响应服务器的任何请求,即服务器:
0xFF xx
->您:
0xFF 0xFC xx
。请参见,例如,是否过滤掉了其他字节?我认为来自服务器的每条消息中都应该有第三个字节,模式为
IAC,
,其中
表示需要发送哪种响应(
)。另一个来源:我的错,我这边的一个打字错误。。。这些序列都是三个字节的DO序列。我已经更新了
FF FD 18
FF FC 18
FF FB 18
FF FE 18