Bash 在expect脚本中处理多个繁殖进程
下面是我的expect脚本用例(我拥有的少数几个用例之一) 我想通过ssh运行多个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
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};#此时最后一个生成的进程已退出
}
}