如何从后台脚本记录Shell交互

时间:2019-01-10 13:44:42

标签: bash shell sh background-process

我想编写一个非常类似于script的背景sh(实际上可以是python或任何其他语言)脚本。

它的主要目的是在调用后在后台运行并监听用户输入的输入(不是输出,也不是PS1 shell提示字符串,也不是诸如“ End”,“ Ctrl”,方向键之类的键击)。到最初从中调用脚本的外壳,然后记录它们。

最愚蠢的方法是使用script,然后尝试从生成的文件中减去PS1和输出。但这很容易出错,并且肯定有更好的方法可以做到这一点。

我已经读过pam_tty_audit了,但是我不确定是否可以轻松过滤掉用​​户输入的信息,而且恐怕它不适用于所有Linux发行版。

我还能寻求什么实现这一目标?

一个简短的例子,说明我的追求:

用户将其输入到外壳程序中:

$ ./myscript
MyScript started in the background
$ echo "foo"
$ sudo apt install netcat
[sudo] password for user: MYPASSWORD
...
Do you want to continue? [Y/n] NO
...
$ exit
MyScript exited

我的脚本将呈现此输出文件:

#!/bin/bash

eval "echo \"foo\""
echo "NO" | echo "MYPASSWORD" | eval "sudo apt install netcat"

不好意思:捕获sudo键入的密码并不是我真正想要执行的操作,上面的例子只是我想到的第一个例子。

0 个答案:

没有答案