我想编写一个非常类似于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
键入的密码并不是我真正想要执行的操作,上面的例子只是我想到的第一个例子。