1

Cisco スイッチに telnet で接続し、いくつかのコマンドを実行しようとしています。ホストが存在しないかどうかを確認できますが、ユーザー名またはパスワードが正しいかどうかを確認する方法がわかりません。これは私がこれまでに得たものです(これは私のクラスの一部です)

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 に答える