3

以下のコードは現在うまく機能しています。ただし、連続して実行されます。最大数のセッションを取得し、それらをすべて完了させて結果をこの親スクリプトにフィードバックするまで、source_listファイルをロールスルーできるようにしたいと思います。それは可能ですか、それとも結果をフィードバックするために呼び出しているスクリプトを変更する必要がありますか?フォークコマンドを見てきましたが、少しわかりにくいです。

set source_list [lindex $argv 0]

set device_list [open $source_list r]
while {[gets $device_list ipaddress] != -1} {
spawn "./ios-upgrade.exp" 0 $ipaddress username password image-file MD5hash ftp-server
expect eof
}
close $device_list
4

2 に答える 2

2

本当に必要なのは次のとおりです。

exec ./ios-upgrade.exp 0 $ipaddress username password image-file MD5hash ftp-server &
## No need for an expect statement here since you didn't spawn...

&最後の文字execはシェル内のスクリプトをバックグラウンドにするため、リターン コードでループがブロックされません。

ただし、ユーザー名とパスワードを CLI 引数として送信しているため、誰かがそうするps auxwか、その同類の場合、それらはプロセス テーブルにも表示されます。ユーザー名/パスワードをIPアドレスと同じファイルに保存し、次を使用します。

exec ./ios-upgrade.exp 0 $ipaddress image-file MD5hash ftp-server &
## No need for an expect statement here since you didn't spawn...

完了したら、次のios-upgrade.expような名前のファイルを書き込み、ip_4_1_12_18.outすべての IP アドレスのステータスを受け取るまでディレクトリを反復処理します。


OPの追加情報:

上記の回答に欠落している情報は、変数を評価することであったため、適切に渡されたことが判明しました。

exec ./ios-upgrade.exp 0 {*}$ipaddress image-file MD5hash ftp-server &

* {*}TCL 8.5 以降でのみ動作することに注意してください。

答えは次のとおりです。可変量の引数を tcl で exec に追加する方法は?

于 2012-06-15T02:12:09.413 に答える
1

上記の回答に欠落している情報は、変数を評価することであったため、適切に渡されたことが判明しました。

exec ./ios-upgrade.exp 0 {*}$ipaddress image-file MD5hash ftp-server &

* {*}TCL 8.5 以降でのみ動作することに注意してください。

答えは次のとおりです。可変量の引数を tcl で exec に追加する方法は?

于 2012-06-20T04:20:53.340 に答える