Python Telnet端口23对223具有不同的结果

时间:2011-10-14 22:14:34

标签: python python-3.x windows-ce telnetlib

当我运行此Python 3.1代码以使用telnetlib访问设备时,它按预期工作:

import telnetlib

tn = telnetlib.Telnet("15.39.100.126", "23")
tn.write(b"menu\n")
tn.write(b"0\n")
print(tn.read_all().decode('ascii'))

然后,我运行此代码(非常类似于上面,但此端口显示不同的菜单)到端口223并且什么也得不到:

import telnetlib

tn = telnetlib.Telnet("15.39.100.126", "223")
tn.write(b"ipconfig\n")
tn.write(b"exit\n")
print(tn.read_all().decode('ascii'))

当手动将telnet会话运行到223时,它会报告:

WinCEPocket CMD v 6.00
\> 

有没有人遇到类似这样的事情,在同一台设备上使用不同的telnet行为但是在不同的端口上,或者有谁知道我需要用WinCE Pocket采取什么特殊方法?端口23不使用WinCE Pocket - 仅端口223。两个telnet程序在同一个Windows命令shell中运行良好。

1 个答案:

答案 0 :(得分:3)

telnet命令本身对端口23与其他端口做了不同的事情:主要是它实现了telnet选项协商。 telnetlib的目的是为您实现Telnet协议(选项协商等),以便您可以在端口23上与另一端需要telnet的服务进行交互。由于telnet命令不对端口223执行这些操作,因此您的设备可能不期望telnet选项协商,并且被telnetlib的初始化(在带内发送telnet选项)所困惑。 / p>

解决方案是使用普通socket与端口223进行交互。已经有很多关于SO的例子。