2017-08-23 11 views
0

pythonでparamikoモジュールを使用して、スイッチの1つからバナーを読み取ろうとしています。これは私が、私は任意の出力を取得していないが、私は、スクリプトの最後の行をコメントするとき、私は、実行時にシェルb.recv(1000)の最後のコマンドが実際に与えているの上に実行すると私は同じParamiko recv()は対話モードで動作しますが、スクリプト内では機能しません。

import socket 
import sys 
import paramiko 
import subprocess 
a=paramiko.SSHClient() 
a.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 
a.connect('10.22.158.19',username='admin',password='airwave') 
b=a.invoke_shell() 
b.recv_ready() 
b.recv(1000) 

のために使用していたコードです出力

>>> 
>>> b.recv(1000) 
'Last login: Tue Aug 22 23:10:25 2017 from 10.20.14.150\r\r\n(AirwaveMM-19) [mynode] #' 
>>> 

ここで何が間違っていますか?

+0

ターゲットデバイスとparamikoのバージョンに関する詳細はありますか?あなたは、いくつかのデバイスがSSHプロトコルの一部(したがって 'invoke_shell()')を実装しているのを見ています。また、paramiko 2.Xは異なる暗号化モジュールを使用します。最後に、デバッグレベルで 'logging 'をインポートして有効にして完全な出力をポストできるならば、非常に便利です。 – urban

答えて

0

あなたはこのように書く必要があります。データの準備ができているが、データが準備されることが待たれていない場合

while not b.recv_ready(): 
    time.sleep(0.1) 
print b.recv(1000) 

recv_ready()機能チェックを。

+0

私はrecv_ready()を使ってみましたが、それは役に立たなかった>>> paramiko .__ version__ '2.2.1' >>> –

+0

これで働いています。私は初期のコードに入れなかった 'sleep 'と思われます。また 'print'が必要です。ご協力いただきありがとうございます –

関連する問題