telnetlib.写入()无法复制telnet.interact网站()

2024-05-14 00:33:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个90年代的频谱分析仪,上面有个telnet客户端。我可以用linuxtelnetcli进行telnet,这很好…可以按预期控制机器。在

我想把这件事自动化,在一个set-it中完成100个不同的测量,忘记它风格的设置,所以Python是很自然的。在

我正在查看telnetlib模块,并且有一些相互矛盾的结果…请注意,我仍处于原型设计阶段,所以我使用iPython来完成这项工作。在

基本上,我可以用telnetlib.interact()连接并输入一个交互式客户机,它的工作原理与Linux telnet CLI差不多。但是,当我将确切的调试输出复制到telnetlib.write()方法时,仪器没有响应。实际上,它在它的诊断输出中显示了类似于undefined header的内容,因此消息没有被正确地传输到它。在

以下是iPython会话输出:

In [2]: import telnetlib

In [3]: HOST = "192.168.0.118"

In [4]: tn = telnetlib.Telnet(HOST, "5024")

In [5]: tn.set
tn.set_debuglevel                   tn.set_option_negotiation_callback  

In [5]: tn.set_debuglevel(2)

In [6]: tn.interact()
Telnet(192.168.0.118,5024): recv b'Welcome to Telnet SCPI Server: agilent\r\nAgilent Te'
Welcome to Telnet SCPI Server: agilent
Agilent TeTelnet(192.168.0.118,5024): recv b'chnologies, N1996A, US45310134, A.02.03\r\n\r\nSCPI>\xff\xfb'
chnologies, N1996A, US45310134, A.02.03

SCPI>Telnet(192.168.0.118,5024): recv b'\x01\xff\xfb\x03'
Telnet(192.168.0.118,5024): IAC WILL 1
Telnet(192.168.0.118,5024): IAC WILL 3
Telnet(192.168.0.118,5024): recv b'\xff\xfc\x01'
Telnet(192.168.0.118,5024): IAC WONT 1
Telnet(192.168.0.118,5024): recv b'\xff\xfc\x03'
Telnet(192.168.0.118,5024): IAC WONT 3
freq:star 110khz 
Telnet(192.168.0.118,5024): send b'freq:star 110khz\n'
Telnet(192.168.0.118,5024): recv b'SCPI>`
SCPI>

但是,如果我把同样的东西

tn.write(b'freq:star 110khz\n')

什么都没发生…或者,如果我派

tn.write(b'freq:star 110khz\n\n')

什么也没发生…仪器上没有错误信息或任何东西。 好像什么都没发生过。在

我在stackoverflow上看到了一些问题,表明时间是一个问题……除了添加tn.set_debuglevel(2)作为增加延迟的解决方法之外,我不知道如何解决这个问题,但这可能也是我的误解。在

我确实知道,这个工具期望以字符逐个模式查看内容,并且没有说明is是否支持逐行模式,这就是我假设tn.write(foo)发送内容的方式。在

你知道我哪里出错了吗?在


Tags: in内容scpitelnettnwritestarfreq