我正试图远程登录到思科交换机并在其上运行几个命令。我能够检查主机是否不存在,不知道如何检查用户名或密码是否正确。这是我到目前为止所得到的(这是我班级的一部分)
def login(self):
if self.user_name and self.password:
try:
self.connection=telnetlib.Telnet(self.telnet_host)
try:
self.connection.read_until('sername:',1)
self.connection.write(self.user_name+'\r\n')
self.connection.read_until('assword:',1)
self.connection.write(self.password+'\r\n')
self.connection.read_until(self.prompt,1)
print "Connected"
self.loggedON=True
except EOFError:
print "Authentication to "+ self.telnet_host+" failed.\n"
return
except:
print "Can't connect to "+self.telnet_host+"\n"
return
else:
if not self.user_name:
self.user_name=raw_input("Username: ")
self.login()
else:
self.password=raw_input("Password: ")
self.login()
即使密码或用户名错误,仍然会说它已连接。
答案 0 :(得分:0)
首先,你不应该有这样的毯子尝试/除了块。更狭隘地捕获异常。此外,正如其他人所评论的那样,您可能会考虑使用SNMP。
话虽如此,如果你推进Telnet,你可能只是重用其他人的代码。例如,我通过简单的Google搜索找到了this。
答案 1 :(得分:0)
您还可以尝试Exscript:
from Exscript.util.start import quickstart
def do_something(conn):
conn.autoinit()
conn.execute('show version')
quickstart('telnet://localhost', do_something)
quickstart()函数会询问用户的用户名和密码(如果不是您想要的话,请使用 start())。登录失败(和其他错误)会自动进行处理。您可能还想查看Exscript.util.start。