如何在shell脚本中提示用户输入时捕获并执行操作?

时间:2016-08-09 08:01:26

标签: linux shell

我有一个工作的shell脚本,它调用另一个shell脚本来对服务器上运行的某些进程执行某些操作。这个内部shell脚本有时会提示输入用户标识和密码。如果发生这种情况,我想出来这个内部脚本,并希望为进程执行kill -9。任何人都可以建议如何实现这一目标?

还有一点,无论我的shell脚本是什么,我都在日志文件中记录,所以我假设当脚本提示输入用户名和密码时,这些信息也会记录在日志中。所以他们应该是一种方式在日志文件中检查这一点。

我正在使用Linux操作系统。请检查并提出建议。

1 个答案:

答案 0 :(得分:0)

你可以杀死你的孩子脚本 超时后:

( cmdpid=$BASHPID; (sleep 10; kill -9 $cmdpid) & exec my-child-script )

在这种情况下,你会在给定的一段时间(10秒)后杀死my-child-script

您不能(轻松)检测脚本是否在等待输入(在标准输入上),唯一的工作方法是使用strace / ptrace,但它太复杂了 而且我认为这不值得。基于超时的方法似乎更为自然。

你可以在这里找到 在这个问题中这种方法的一些其他例子:

关于日志文件:

您可以使用grep/sed从日志文件中提取数据。为了使答案更具体,我们需要一些额外的数据。