如何自动输入重复脚本!Bash 中的 Expect 是什么?

如何自动输入重复脚本!Bash 中的 Expect 是什么?

我是一名初级系统管理员。我之所以问这个问题,是因为我们这里没有精通脚本的高级系统管理员。高级人员都在总部,太忙了,没时间处理这样的事情。

我的情况是这样的。为了部署应用程序,我必须经常运行三个脚本。这些脚本是由高级系统管理员编写的。通常情况下,它们运行顺利,没有错误。但是,我必须照看它们以进行输入。:(

在这些脚本的某些部分,有些部分我必须输入是或否。我的答案永远不会改变,除非前一部分失败,然后我选择否,然后系统显示“构建失败”。

我运行的基本部分如下:

1 - 通过 SSH 进入部署服务器

2 - 编辑文件中的一小段字符串(指定服务器的特定信息)

3 - 运行脚本 A,它基本上将所有文件从部署复制到目标服务器。我在这里唯一需要提供的输入是在最后。它会询问目标是否显示了正确的日期,如果我回答是,则构建成功。

4- 也从部署服务器运行脚本 B,这需要一些特定的信息,例如:

./scriptB XYZ 其中 X、Y、Z 的变化取决于目标服务器信息。

脚本 B 有一些问题,例如“你想执行这个还是放弃这个”,答案保持不变。此外,有时还会有一个 ANT 错误,因此它会要求我按“1”直到脚本继续。

5-运行脚本 C,它与脚本 B 非常相似。但是在某一时刻,它即将运行某个特定的步骤,我必须手动按“control c”才能退出。

我是脚本方面的新手,但如果有人能告诉我或给我一个想法如何做到这一点,那就太好了。我想我也许可以使用 expect。

更好的是,如果我只需在 Windows 笔记本电脑上单击某个 EXE,它就可以完成所有操作。这可能吗?

答案1

听起来你应该考虑两件事:

  1. 编辑旧脚本以自动执行某些检查(例如时间戳检查),或者删除提示(查找read命令)并使用默认值回答。
  2. 使用专为此任务设计的工具,例如Ansible

如果您想学习新知识并提高您的系统管理员简历,我会考虑第二种选择,尽管第一种选择在短期内应该可以起到很好的作用!

如果您从我提到的第一个选项开始,请尝试让脚本 A 不需要提示 - 使用该date函数获取当前日期,然后自动进行检查。如果您要比较的日期与您刚刚复制的文件中的时间相符,则应该能够使用或等工具findls获取该信息。

exit运行脚本 C,在您通常会点击的位置输入命令应该很简单CtrlC

首先,记得在非关键机器上测试一下!你不会想在破解旧脚本时搞砸生产设置吧……

相关内容