【发布时间】:2014-10-11 04:48:12
【问题描述】:
我正在尝试自动化配置 linux 服务器时使用的一组 telnet 命令。我目前正在尝试为此使用 Python 2.7,并认为 telnetlib 将是要走的路。 但不幸的是,它并没有像我预期的那样工作。
tn = telnetlib.Telnet(ip, port)
print tn.read_until("SysCLI>")
tn.write("help" +"\n")
print tn.read_until("Registered components are:", 10)
这将在 10 秒后终止,只打印第一行:“SysCLI>”。 我尝试了“回车”和“换行”的不同组合,包括“\r”、“\r\n”、“\n\r”,它们似乎都没有帮助。有人对我缺少什么有建议吗?
更新:我在另一台服务器上尝试了我的代码,它似乎工作正常:
ip = "www.google.com"
port = 80
tn = telnetlib.Telnet(ip, port)
tn.write("Get / HTTP/1.1" +"\n" +"\n")
print tn.read_some()
所以我认为我的问题是服务器需要一些特殊字符来发送消息。
【问题讨论】:
-
使用
tn.read_some()而不是tn.read_until来确保tn.write工作与否。read_until将等待,read_some只是阅读一些内容并返回。当您不确定结果时,此方法会很有帮助。 -
好建议。但在这种情况下,我确切地知道预期的结果,因为我仍然可以手动完成。但是我确实尝试过,但它什么也没返回,与 read_until() 一样
-
你的服务器不使用什么操作系统?
-
服务器正在使用自制的 Linux 发行版。
-
我没有任何建议。也许您可以尝试找出您正在使用的外壳。是不是编码问题造成的?您也可以尝试使用 tcp dump 来检查客户端和服务器之间的传输。