7

SSH 接続に Paramiko を使用して Cisco ルーターから構成を取得するスクリプトを Python で作成しています。また、失敗することなく、デバイスのログイン資格情報が正しいことを確認しようとしています。

現在、資格情報が正しい場合、コードは接続して必要なコマンドを実行します。すごい!ただし、間違った資格情報を入力すると、スクリプトは認証エラーで失敗します。

コード:

ip = *.*.*.*
u = username
p = password


ssh = paramiko.SSHClient()

ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

ssh.connect(ip, username=u, password=p)

shell = ssh.invoke_shell()

プログラムを開始して間違った資格情報を入力すると、これが出力されます。

paramiko.AuthenticationException: 認証に失敗しました。

これは、資格情報が間違っていることはわかっていますが、スクリプトが失敗するだけでなく、問題を表示してスクリプトの残りの部分を実行し続けたいと考えています。

何か案は?

4

1 に答える 1

8

Python マニュアルのセクション 8.3 (例外の処理) を参照してください。例外を「キャッチ」して処理できます。これにより、例外によってプログラムが終了するのを防ぐことができます。コードが例外をキャッチしない場合、プログラムは例外でのみ終了します。

try:
    ssh = paramiko.SSHClient()
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    ssh.connect(ip, username=u, password=p)
    shell = ssh.invoke_shell()
except paramiko.AuthenticationException:
    print "We had an authentication exception!"
    shell = None

shellただし、 isの場合に失敗しないようにコードを記述する必要がありNoneます。

于 2011-06-16T13:33:45.283 に答える