所以我尝试了python文档中给出的这个非常简单的例子:
import getpass
import sys
import telnetlib
HOST = "<HOST_IP>"
user = raw_input("Enter your remote account: ")
password = getpass.getpass()
tn = telnetlib.Telnet(HOST)
tn.read_until("login: ")
tn.write(user + "\n")
if password:
tn.read_until("Password: ")
tn.write(password + "\n")
tn.write("ls\n")
tn.write("exit\n")
print tn.read_all()我的问题是它挂在read_all()的末尾...它不会打印出任何东西。我以前从来没有使用过这个模块,所以在继续之前,我正在尝试让这个非常基本的示例工作。顺便说一句,我用的是python 2.4谢谢。
发布于 2012-06-09 00:37:04
好吧,我找到了一个解决方案。在输入ls并退出之前,我需要首先指定终端类型。添加
tn.write("vt100\n") 在"ls“帮我解决这个问题之前。
发布于 2013-08-29 19:18:20
如果您使用的是Windows,请确保在换行符之前添加回车符(\r):
tn.write(user.encode('ascii') + "\r\n".encode('ascii'))发布于 2017-03-15 19:48:05
我知道这篇文章太晚了,但可能会对其他人有所帮助。我也努力做到这一点,但这是我的一段代码。我的远程登录将遵循特定的流程,例如它将请求loginID,然后是Password,然后您必须等待一个特定的字符串在这里显示,对于我的情况,它是"DB>",然后您可以继续执行命令和所有操作。我的输出将保存在"out"变量中
import os,re,telnetlib
host = "10.xxx.xxx.xxx"
port = 23
telnet = telnetlib.Telnet()
telnet.open(host, port)
telnet.write('loginID\r\n')
telnet.write('Password\r\n')
out = telnet.read_until("DB>", 5)
telnet.write('show cable modem reg\r\n') #Mycommand
out = telnet.read_until("DB>", 5)
telnet.write('quit\r\n')
telnet.close()有关更多变体和帮助,请查看网站nullege
https://stackoverflow.com/questions/10952514
复制相似问题