2016-07-09 7 views
1

シスコの基本的なスクリプトを書きました。 ssh接続した後、私は、ファイルからのコマンドラインを送信するとき、たとえば、シスコのエラー出力を検出したい:Cisco Expectスクリプトのエラー

SPAIN#sow crypto isakmp sa 
    ^
% Invalid input detected at '^' marker. 

が、私は私のループで、「無効な%」をキャッチし、プログラムの開発を停止します。

foreach line $data { 
    expect "*#" 
    send "$line\r" 
    expect { 
     "% Invalid*" { send_user "\n Command [ $line ] Failed. \n"; exit 252 } 
    } 

私は出力にこれらのエラーを取得:

SPAIN>enable 
Password: 
SPAIN#sow crypto isakmp sa 
^
% Invalid input detected at '^' marker. 

SPAIN#invalid command name "sow crypto isakmp sa" 
while executing 
"$line " 
invoked from within 
"expect { 
    "% Invalid*" { send_user "\n Command [ $line ] Failed. \n"; exit 252} 
}" 
("foreach" body line 4) 
invoked from within 
"foreach line $data { 
    expect "*#" 
    send "$line\r" 
    expect { 
     "% Invalid*" { send_user "\n Command [ $line ] Failed. \n"; exit 252} 
    } 
}" 

おかげ

答えて

0

問題は[]はTclの中に特別な意味を持っているということです。コマンドを実行して結果を返します。

変更この:

expect { 
    "% Invalid*" { send_user "\n Command [ $line ] Failed. \n"; exit 252 } 
} 

へ:

expect { 
    "% Invalid*" { send_user "\n Command \[ $line \] Failed. \n"; exit 252 } 
} 

詳細については、TclのマニュアルでEvaluation & Substitutions 3: Grouping arguments with []を参照してください。

+0

@DonalFellowsの編集に感謝します。 – Will

関連する問題