2017-12-01 8 views
0

私はCiscoスイッチの 'のshow version' を実行すると、私は次のような出力を得る:

のCisco IOSソフトウェア、C3750Eソフトウェア(C3750E-UNIVERSALK9-M)を、バージョン12.2(58)SE2、リリースソフトウェア(FC1) テクニカルサポート:シスコシステムズ、株式会社

< --output切り捨てによってhttp://www.cisco.com/techsupport 著作権(C)1986から2011 - >

私は、スイッチにログインする期待の実行を使用していますshow versionコマンド、および私は、画面への出力は、以下のコードを使用してすることができ、そのコマンドの完全な出力と正確なバージョン、期待:

send "show version\n" 
expect -re "show version.*Version (.*), REL.*#$" 
send_user "Command Output:\n$expect_out(0,string)\n\n" 
send_user "Version:\n$expect_out(1,string)\n\n" 

をこのすべてはOK、しかし、私は今、この使用してPythonとPexpectを複製しようとしています動作します。私はchild.beforeを使用して$ expect_outの同等の(0、文字列)を取得することができます:

child.sendline(show version') 
child.expect('#') 
print("\r\n","Command Output:","\r\n",child.before, sep = '') 

にはどうすれば正確なバージョンを取得するためにPexpectに$ expect_out(1、文字列)を複製していますか?事前に

感謝

答えて

0

Pexpectパッケージが予想よりもかなり少ないを行い、これは、関連するマッチオブジェクトへの曝露のアクセスがないので、それは批判的に異なっている分野の一つです。

気になる部分を抽出するには、use a separate REが必要です。

import re 

child.sendline(show version') 
child.expect('#') 
print("\r\n","Command Output:","\r\n",child.before, sep = '') 

m = re.search("show version.*Version (.*), REL.", child.before) 
if m: 
    print("Version:\n" + m.group(1) + "\n\n") 
+0

これは私が必要としていたものです。 – farrier

関連する問題