Parallel processing 如何在生成后对多台主机同时执行相同的expect
我试图同时ssh到多个主机,并同时为所有主机执行相同的命令。我正在使用expect登录并自动发送命令。我在下面创建的脚本可以正常工作,但可以为每个主机逐个串行地连接和执行命令。我想让expect同时为所有主机工作,比如为每个主机创建子进程或在后台工作 有没有办法做到这一点 对于我的代码,我正在读取一个包含多个IP地址的文件,并将其传递给脚本 这是我的密码:Parallel processing 如何在生成后对多台主机同时执行相同的expect,parallel-processing,background-process,expect,spawn,simultaneous,Parallel Processing,Background Process,Expect,Spawn,Simultaneous,我试图同时ssh到多个主机,并同时为所有主机执行相同的命令。我正在使用expect登录并自动发送命令。我在下面创建的脚本可以正常工作,但可以为每个主机逐个串行地连接和执行命令。我想让expect同时为所有主机工作,比如为每个主机创建子进程或在后台工作 有没有办法做到这一点 对于我的代码,我正在读取一个包含多个IP地址的文件,并将其传递给脚本 这是我的密码: #! /bin/expect set prompt ">" set fd [open ./hosts r] set hosts [re
#! /bin/expect
set prompt ">"
set fd [open ./hosts r]
set hosts [read -nonewline $fd]
close $fd
foreach host [split $hosts "\n" ] {
set timeout 30
spawn ssh admin@$host
lappend spawn_id_list $spawn_id
}
foreach id $spawn_id_list {
set spawn_id $id
while (1) {
expect {
"ssh:" {
exit
}
"no)? " {
send "yes\r"
}
"password: " {
send "password\r"
}
"$prompt" {
send "some commands\r"
break
}
timeout {
exit
}
-re . {
exp_continue
}
eof {
exit
}
}
}
}
expect eof
使用Expect的
fork
怎么样
根据Expect的:
fork
创建一个新进程。新的工艺完全是原工艺的复制品
当前的预期过程。成功后,fork
将0
返回到新的
(子)进程并返回子进程的进程ID
到父进程。失败时(通常是由于缺乏
资源(例如交换空间、内存),fork
将-1
返回到
父进程,而不创建子进程
分叉进程通过exit
命令退出,就像原始进程一样。允许分叉进程写入日志
文件夹。如果不禁用调试或登录大多数
过程、结果可能会令人困惑
一些pty实现可能会被多个读卡器和
作家,哪怕是暂时的。因此,最安全的方法是在
产卵过程。