用Python编写Telnet
我对python还是有点陌生,通常会摆弄telnet,但这里有一个问题。出于某种原因,我写的这段代码并没有停下来让我通过telnet终端实际写任何东西,它只是运行到完成而没有停止。我不知道我做错了什么,有人能帮忙吗用Python编写Telnet,python,telnet,python-3.4,Python,Telnet,Python 3.4,我对python还是有点陌生,通常会摆弄telnet,但这里有一个问题。出于某种原因,我写的这段代码并没有停下来让我通过telnet终端实际写任何东西,它只是运行到完成而没有停止。我不知道我做错了什么,有人能帮忙吗 import telnetlib import time HOST = input("IP Address: ") command = b" " tn = telnetlib.Telnet(HOST, port = 23, timeout = 20) time.sleep(10)
import telnetlib
import time
HOST = input("IP Address: ")
command = b" "
tn = telnetlib.Telnet(HOST, port = 23, timeout = 20)
time.sleep(10)
tn.write(command + b"\n")
ret1 = tn.read_eager()
time.sleep(10)
print(ret1)
tn.write(b"001 rq version\n")
ret2 = tn.read_until(b"_DNE", timeout = 5)
time.sleep(10)
print(ret2)
tn.write(command + b"\n")
print("Success!")
tn.close()
编辑:对不起,我应该更清楚地说明
基本上,在获得IP后,它就可以很好地连接到主机。之后的问题是“tn.write(command+b”\n“)”行,根据我查找的所有内容,这应该允许用户输入任何他们想输入的内容,但程序根本不允许用户输入任何内容。在我看来,
command
基本上是一个空字符串,这似乎在任何时候都不会改变(除了“\n”)。每次执行tn.write(command+b“\n”)
时,您只是在发送b“\n”
。您没有提示用户键入任何内容。尝试以下方法:
command = input("Enter command: ")
tn.write(b"{}\n".format(command))
除了写作之外:
tn.write(command + b"\n")
我不熟悉telnetlib,所以这可能是错误的,但程序是否需要在IP之外提示输入?我不确定你所说的“它只是运行到完成而不停止”是什么意思。你能澄清一下吗!在用户获得IP输入后,您再也不会要求用户输入任何内容。是否要求您输入IP?输出的准确度是多少?您需要使用read_until或相关函数,否则它将尝试从远端读取所有内容,直到连接关闭。请参见telnetlib文档中的示例: