在Python中验证对Telnet会话的身份验证

时间:2011-06-01 18:19:14

标签: python authentication telnet verification cisco

我正试图远程登录到思科交换机并在其上运行几个命令。我能够检查主机是否不存在,不知道如何检查用户名或密码是否正确。这是我到目前为止所得到的(这是我班级的一部分)

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()

即使密码或用户名错误,仍然会说它已连接。

2 个答案:

答案 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