作者xyzman (.........)
看板Linux
标题[问题] - Expect parallel问题
时间Wed Dec 11 17:15:11 2019
我需要用Expect登入主机去执行一些指令,因主机数量众多所以想看是否可以多process
的方式同时执行登入多主机并执行,所以想用expect以foreach的方式达到
以下是我的脚本内容,实际执行起来用ps查询,确实同时生成多个process
但实际去看执行的结果,还是会依序一台一台的执行,并不是同时平行的方式执行
不知道是哪里有问题?还是我的概念根本完全是错的。
#!/usr/bin/expect
set prompt "#"
set password "xxx"
set fd [open ./hosts r]
set hosts [read -nonewline $fd]
close $fd
foreach host [split $hosts "\n" ] {
set timeout 30
spawn ssh -oStrictHostKeyChecking=no user@$host
lappend spawn_id_list $spawn_id
}
foreach id $spawn_id_list {
set spawn_id $id
expect \
"(yes/no)?" {
send "yes\r"
expect "password:?" {
send "$password\r"
}
} "password:?" {
send "$password\r"
}
expect "#"
send "xxxx\r"
expect "#"
send "xxxx\r"
send "exit\r"
expect eof
}
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 118.163.80.132 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Linux/M.1576055714.A.501.html
1F:推 filiaslayers: 不考虑同时执行多个except指令? 12/11 17:41
2F:推 bamchisu: except不是本来就是一台台执行,应该跟foreach无关 12/11 20:36
3F:推 kdjf: 就是个很普通的for回圈而已,为什麽觉得会自动平行化@@ 12/12 07:42
4F:推 LinBuoRen: 远端对多部主机进行操作推荐使用 RehHat 出的 Ansible 12/12 09:49
5F:→ xyzman: 我已经用ansible来解了,谢谢各位 12/12 13:02
6F:推 chang0206: 推ansible 12/12 13:57