- Expect parallel問題 - Linux

Table of Contents

我需要用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

}

--

All Comments

Puput avatarPuput2019-12-13
不考慮同時執行多個except指令?
Ina avatarIna2019-12-17
except不是本來就是一台台執行,應該跟foreach無關
Hamiltion avatarHamiltion2019-12-19
就是個很普通的for迴圈而已,為什麼覺得會自動平行化@@
Queena avatarQueena2019-12-20
遠端對多部主機進行操作推薦使用 RehHat 出的 Ansible
Lily avatarLily2019-12-22
我已經用ansible來解了,謝謝各位
Ethan avatarEthan2019-12-22
推ansible