我是一个完全的新手,在谷歌和期待书中的所有发现之后,我编写了这段代码,但仍然需要大约 30-40 分钟才能通过单个 IP 地址执行任务。
现在我来期待这样的 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"
}
}