1

我正在尝试远程登录到 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()

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

4

2 回答 2

1

您也可以尝试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

于 2011-06-18T18:47:38.703 回答
0

首先,你不应该有这样的一揽子 try/except 块。更严格地捕获异常。此外,正如其他人评论的那样,您可能会考虑使用 SNMP。

话虽如此,如果你继续使用 Telnet,你还不如重用别人的代码。例如,我通过简单的 Google 搜索找到了这一点。

于 2011-06-01T19:16:53.017 回答