【问题标题】:Writing through Telnet with Python使用 Python 通过 Telnet 编写
【发布时间】:2015-10-01 20:34:11
【问题描述】:

我对 python 和一般的 telnet 还有些陌生,但我在这里遇到了一个问题。出于某种原因,我编写的这段代码并没有停止让我通过 telnet 终端实际编写任何东西,它只是不停地运行到完成。我不知道我做错了什么,有人可以帮忙吗?

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“)”行,根据我查找的所有内容,这应该允许用户输入他们想要输入的任何内容,但程序不会停止允许用户输入任何内容。

【问题讨论】:

  • 我对telnetlib不熟悉,所以这可能是错误的,但是程序除了IP还需要提示输入吗?
  • 我不确定您所说的“它只是运行到完成而没有停止”是什么意思。你能澄清一下吗!
  • 得到用户输入的IP后,就不再要求用户输入。是不是要你输入IP?输出到底是什么?
  • 您需要使用 read_until 或相关函数,否则它将尝试从远端读取所有内容,直到连接关闭。参见 telnetlib 文档中的示例:docs.python.org/3.4/library/telnetlib.html

标签: python telnet python-3.4


【解决方案1】:

在我看来command 基本上是一个空字符串,而且似乎在任何时候都没有改变('\n' 除外)。每次你做tn.write(command + b"\n"),你只是在发送b"\n"。您没有提示用户输入任何内容。尝试类似:

command = input("Enter command: ")
tn.write(b"{}\n".format(command))

代替只是写作:

tn.write(command + b"\n")

【讨论】:

    猜你喜欢
    • 2012-08-11
    • 2011-11-13
    • 2019-01-12
    • 2017-01-08
    • 2016-03-09
    • 2011-03-31
    • 2011-08-14
    • 2020-10-03
    • 2014-03-15
    相关资源
    最近更新 更多