Bash 在expect脚本中处理多个繁殖进程

Bash 在expect脚本中处理多个繁殖进程,bash,sed,expect,spawn,Bash,Sed,Expect,Spawn,下面是我的expect脚本用例(我拥有的少数几个用例之一) 我想通过ssh运行多个sed命令。它类似于预构建环境设置。 我想运行这样的程序:- #!/usr/bin/expect set timeout -1 spawn -noecho bash -c "ssh -t user@host 'sed -i <some_stuff1> <file1>'" spawn -noecho bash -c "ssh -t user@host 'sed -i <some_stu

下面是我的expect脚本用例(我拥有的少数几个用例之一)

我想通过ssh运行多个
sed
命令。它类似于预构建环境设置。 我想运行这样的程序:-

#!/usr/bin/expect
set timeout -1

spawn -noecho bash -c "ssh -t user@host 'sed -i <some_stuff1> <file1>'"
spawn -noecho bash -c "ssh -t user@host 'sed -i <some_stuff2> <file2>'"
spawn -noecho bash -c "ssh -t user@host 'sed -i <some_stuff3> <file3>'"

expect {
  -re ".*sword.*" {
     exp_send "$env(PASS_WORD)\n"
     exp_continue
  }
}
#/usr/bin/expect
设置超时-1
spawn-noechobash-c“ssh-tuser@host“sed-i”
spawn-noechobash-c“ssh-tuser@host“sed-i”
spawn-noechobash-c“ssh-tuser@host“sed-i”
期待{
-关于“*剑。*”{
exp\u send“$env(传递单词)\n”
exp\u继续
}
}
但只执行最后一个
sed
命令。将跳过第一个和第二个

我丢失的那颗隐藏的宝石可能是什么

这是我到目前为止看到的,但没有帮助

在这里,您并不真正需要多个(意味着并行)
spawn

#/usr/bin/expect
设置超时60
设置cmds[列出“ssh主机1…”“ssh主机2…”“ssh主机3…”]
foreach cmd$cmds{
spawn-noecho bash-c$cmd
期待{
-nocase“密码”{
exp\u send“$env(传递单词)\r”
exp\u继续
}
eof{wait};#此时最后一个生成的进程已退出
}
}