python telnet.mt_interact 在任何 IDE 中都不起作用,但 SPYDER

Posted

技术标签:

【中文标题】python telnet.mt_interact 在任何 IDE 中都不起作用,但 SPYDER【英文标题】:python telnet.mt_interact doesn't work in any IDE but SPYDER 【发布时间】:2021-12-17 16:08:16 【问题描述】:

我通常使用 python 库“telnetlib”

但我遇到了一个问题,我不知道如何解决。

代码如下:

def bbb():
    tn = telnetlib.Telnet(Ip, port=23, timeout=20)
    print(tn)
    tn.write(bytes("Something no.1 \n", encoding='utf-8'))        
    time.sleep(10)    

    ## ~~~ blah blah read data ~~~ ##

    tn.mt_interact()

    tn.write(bytes("Something no.2 \n", encoding='utf-8'))
    
    tn.close()
    time.sleep(1.5)
    

我想从 telnet 读取大量数据,但任何 tn.read 命令都不起作用.. (例如 tn.read_all())

所以我需要使用tn.mt_interact()

但是在那一行之后,代码不起作用,telnet 连接看起来只是暂停,所以我无法关闭 tn 连接。

令人惊讶的是,当我在 SPYDER(Anaconda) 上运行相同的代码时,它可以工作!!! 这可能吗?

我需要将此代码制作为 exe 文件 和 exe 文件不能同时工作:tn.mt_interact()

【问题讨论】:

我无法在连接到 Unix 机器的 Windows 10 上使用 Python 3.9 重现:tn.read_until(':')tn.write(b'login\r')tn.read_until(':')tn.write(b'password\r')tn.write(b'password\r')tn.read_until(b'$ ')tn.write(b'ls\r')tn.read_until(b'$ ')tn.write(b'\x04')@9在 IDLE 中完美运行。 第二次阅读问题后,我认为在IDLE中使用interact(或mt_interact)确实是不可能的,可能是因为io流的实现方式:你需要发送dummy 命令(只需键入 Enter)让interact 读取并显示主机发送的内容。但不管怎样,interact 只是为了能够快速看到发生了什么,而read_untilexpect 是首选方法。 【参考方案1】:

根据 telnet 库,tn_interact 是一个多线程版本的交互,它只是模拟一个愚蠢的 telnet 客户端。

Telnet.interact()
Interaction function, emulates a very dumb Telnet client.

因此,即使它在 Spyder 中有效,使用 interact 或 tn_interact 也无法解决您的问题。

你得看看为什么读写功能不起作用。

连接是否成功打开? 设备是否在响应您的命令?

您需要调试并了解它为什么不通信

【讨论】:

以上是关于python telnet.mt_interact 在任何 IDE 中都不起作用,但 SPYDER的主要内容,如果未能解决你的问题,请参考以下文章

001--python全栈--基础知识--python安装

Python代写,Python作业代写,代写Python,代做Python

Python开发

Python,python,python

Python 介绍

Python学习之认识python