3

在我写入服务器的最后一个命令之后,我正在使用 telnetlib 打印输出

tn.write(cmd_login)
tn.write(cmd...)
tn.write(cmd_last)
print tn.expect([word],timeout)[-1]

但是,当我打印期望的返回时,它还显示了我之前写入服务器的结果(例如:cmd_login cmd...) 无论如何只在 tn.write(cmd_last) 之后打印结果?

4

2 回答 2

0

我建议在每个 Telnet.write 之后使用 Telnet.read_until。对于 read_until 的预期参数,可以使用 telnet 提示。最后,应该从输出中减去命令。我不知道更好的方法。它可能看起来像这样:

tn.write(cmd_login)
tn.read_until(prompt)
tn.write(cmd...)
tn.read_until(prompt)
tn.write(cmd_last)
output = tn.read_until(prompt)
cmdIndex = output.find(cmd_last)
output = output[cmdIndex + len(cmd_last):]
print output
于 2013-05-16T07:29:38.693 回答
0

我通过运行 read_very_lazy() + read_until 解决了这个问题:

tn.read_very_lazy()
tn.write(b'the_command\r\n')
tn.read_until(b'\r\n', timeout=2)

但是,我没有很好地测试它,还没有声称它没有任何负面影响。

于 2019-07-02T02:31:36.893 回答