使用Python检查Telnet是否仍然连接

2024-05-17 00:57:33 发布

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

我正在编写一个python程序,它使用Telnet每秒发送相同的几个命令,然后读取输出,将其组织成字典,然后打印到JSON文件(如果它后来被前端web gui读入的话)。其目的是提供关键telnet命令输出的实时更新。在

我遇到的问题是,如果连接在程序中途丢失,它会导致程序崩溃。我尝试了很多方法来处理这个问题,比如使用布尔值,一旦连接成功,就设置为True;如果有超时错误,则设置为False,但这有一些限制。如果成功建立了连接,但后来断开了连接,那么尽管连接丢失,布尔值仍将为true。我也找到了一些方法来处理这个问题(例如:如果Telnet命令在5秒内没有返回任何输出,那么连接就会丢失,布尔值也会更新为False)。在

然而,这是一个复杂的程序,似乎有太多可能的方式断开连接可以通过我写的检查,仍然导致程序崩溃。在

我希望找到一种非常简单的方法来检查Telnet命令是否已连接。如果是一行代码,那就更好了。我目前知道的唯一检查是否连接的方法是再次尝试连接,如果网络连接断开,这将失败。但是,我不想每次检查都要打开一个新的telnet连接以确保它已连接。如果它已经连接上了,那是在浪费关键的时间,而且在你尝试连接之前没有办法知道它没有连接。在

我要找的东西是:

tnStatus = [function or line of code that checks if Telnet is connected (w/o trying to open a connection), and returns boolean]
if(tnStatus == True):
    sendComand('bla')

有什么建议吗?在

我运行的是python2.6(由于向后兼容性原因无法更新)

编辑:

这是我目前如何连接到telnet和发送/读取命令的代码(节略)。在

^{pr2}$

其他地方。。。在

cli = cliManager("136.185.10.44", 6000, 2)
cli.connect()
giDict = cli.sendCmd('getInfo')
[then giDict and other command results go to other methods where they are formatted and interpreted for the front end user]

Tags: andto方法代码命令程序falsetrue