Проверка подлинности сеанса Telnet в Python - PullRequest
0 голосов
/ 01 июня 2011

Я пытаюсь подключиться к коммутатору 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 голосов
/ 18 июня 2011

Вы также можете попробовать 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 .

0 голосов
/ 01 июня 2011

Во-первых, у вас не должно быть общего блока try / кроме этого.Ловите исключения более узко.Кроме того, как прокомментировали другие, вы могли бы рассмотреть SNMP.

Сказав, что, если вы продвигаетесь с помощью Telnet, вы можете просто повторно использовать чужой код.Я нашел это , например, с помощью простого поиска Google.

...