私は完全な初心者であり、Google ですべての調査結果と本を期待した後、このコードを書きましたが、単一の IP アドレスでタスクを実行するには約 30 ~ 40 分かかります。
今、私は次のような for ループ内のコードを期待しています:
foreach host [ split $hosts "\;" ] {
#blah blah blah
#more code
expect -re "$prompt"
send -- "exit\r"
}
並列処理のためにバックグラウンドで各ホストに対してこれを実行する必要があります
これを行うにはどうすればよいですか:
foreach host [ split $hosts "\;" ] {
{
#blah blah blah
#more code
expect -re "$prompt"
send -- "exit\r"
} &
}
待つ
また、各プロセスが同時に同じファイルに書き込もうとする可能性があるため、ログ ファイルが文字化けしないようにするにはどうすればよいですか。
編集: SendCommands という関数を使用して、次のようなバッファをログ ファイルに入れるコマンドを送信しました。
proc SendCommands { Commands } {
global prompt log errlog
foreach element [split $Commands ";"] {
expect {
-re $prompt
{send -- "$element\r"}
}
set outcome "$expect_out(buffer)"
puts "$log" "$outcome"
}
}