繁体   English   中英

如何将 bash 期望脚本链接在一起?

[英]How can I chain together bash expect scripts?

伙计们。 我正在致力于自动化工作中的流程,该流程涉及在各种虚拟机中输入无穷无尽的命令。 这都是非常简单的东西,但它既费时又容易出现人为错误。

我偶然发现了“期望”命令,它们一开始就适合我的需要。 我有一个看起来像这样的脚本:

#!/usr/bin/expect -f

spawn ssh root@[server name]
expect "such and such" 
send "thing\n"

这会重复一段时间,最终我完成了该 VM 上的工作。 我希望脚本执行的是输入退出命令,然后开始在我正在处理的本地终端中执行其他命令,如下所示:

... 
expect "last part"
send "exit\n"

expect "something"
send "new commands"

或者:

...
expect "last part"
send "exit\n"

spawn ./newscript.sh

无论出于何种原因,expect 似乎都忽略了我的最后一个exit命令。 如果有一种方法可以在一个期望脚本中进行多次生成,或者,如果有一种方法可以将脚本链接在一起,请告诉我。

做这个:

expect "last part"
send "exit\r"
expect eof    ;# allow the spawned process to gracefully exit

system ./newscript.sh

从期望手册:

system参数

args作为输入提供给 sh(1),就像它是从终端输入的命令一样。 Expect 一直等到 shell 终止。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM