2017-10-12 9 views
-2

以下の出力から「Manage VLAN」の値を正規表現で抽出し、後でスクリプトで使用する変数に値を格納する必要があります。複数行のテキストの後の文字列を一致させる

set switch 100.10.100.100 
set Username "test" 
set Password "test" 

spawn ssh -o StrictHostKeyChecking=no [email protected]$switch 
expect "*assword: " 
send "$Password\r" 
expect *> 
send "enable\r" 
expect "*#" 
send "config\r" 
expect "(config)#" 
send "display something" 

出力は次のようになります。

status    : Connected 
IP Address   : 2.2.2.2 
Mask    : 255.255.255.255 
Gateway   : 2.2.2.1 
Manage VLAN  : 456 
Manage priority : 0 
Option60   : No 
Switch    : Enable 

私はこれをどのように実現するのでしょうか?

+0

あなたは出力を抑制したり、出力を保持すると同時に、必要なデータを抽出したいですか? – RomanPerekhrest

+0

私はすべての出力を抑え、Manage VLANフィールドから値を抽出し、その値を変数に割り当てます。 – n33raj116

+0

あなたはどのツールを使用していますか?私はあなたが「期待する」ものを何かしたくないとは確信できません。そうでなければ、 'awk '/ Manage VLAN/{print $ 3}'が値を出力します。 'tclsh'にvarsを格納することについては不明ですが、おそらく' set val = \ 'awk .... \' '?バックチックを認識できない場合は、コマンド置換を検索して読んでください。がんばろう。 – shellter

答えて

1

は、例を参照してください:

expect1.1> spawn bash -c "echo vlan : 1234" 
spawn bash -c echo vlan : 1234 
22902 
expect1.2> expect -re {vlan *: *([0-9]+)} 
vlan : 1234 
expect1.4> set vlanid $expect_out(1,string) 
1234 
expect1.5> puts $vlanid 
1234 
expect1.6> 
関連する問題