gpt4 book ai didi

python - 使用 telnetlib 实时读取输出

转载 作者:太空狗 更新时间:2023-10-29 22:16:39 34 4
gpt4 key购买 nike

我正在使用 Python 的 telnetlib 远程登录到某台机器并执行一些命令,我​​想获得这些命令的输出。

那么,目前的情况是什么——

tn = telnetlib.Telnet(HOST)
tn.read_until("login: ")
tn.write(user + "\n")
if password:
tn.read_until("Password: ")
tn.write(password + "\n")

tn.write("command1")
tn.write("command2")
tn.write("command3")
tn.write("command4")
tn.write("exit\n")

sess_op = tn.read_all()
print sess_op
#here I get the whole output

现在,我可以在 sess_op 中获得所有合并的输出。

但是,我想要的是在执行 command1 之后和执行 command2 之前立即获取 command1 的输出,就好像我在另一台机器的 shell 中工作一样,如下所示 -

tn = telnetlib.Telnet(HOST)
tn.read_until("login: ")
tn.write(user + "\n")
if password:
tn.read_until("Password: ")
tn.write(password + "\n")

tn.write("command1")
#here I want to get the output for command1
tn.write("command2")
#here I want to get the output for command2
tn.write("command3")
tn.write("command4")
tn.write("exit\n")

sess_op = tn.read_all()
print sess_op

最佳答案

我在使用 telnetlib 时遇到了类似的问题。

然后我意识到在每个命令的末尾缺少一个回车符和一个新行,并对所有命令执行了 read_eager。像这样:

 tn = telnetlib.Telnet(HOST, PORT)
tn.read_until("login: ")
tn.write(user + "\r\n")
tn.read_until("password: ")
tn.write(password + "\r\n")

tn.write("command1\r\n")
ret1 = tn.read_eager()
print ret1 #or use however you want
tn.write("command2\r\n")
print tn.read_eager()
... and so on

而不是像这样只写命令:

 tn.write("command1")
print tn.read_eager()

如果它对你来说只需要一个“\n”,那么只添加一个“\n”可能就足够了,而不是“\r\n”,但在我的例子中,我不得不使用“\r\n”和我还没有尝试过只换一条线。

关于python - 使用 telnetlib 实时读取输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10126239/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com