Я хочу написать фоновый сценарий sh (это может быть python или любой другой язык), очень похожий на script
.
Его основное назначение - запускать в фоновом режиме после вызова и прослушивать вводимые пользователем данные (не выходные данные, не строку приглашения оболочки PS1 и не нажатия клавиш, такие как «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"
Obs .: Захват пароля, введенного для sudo
, на самом деле не то, что я хотел бы выполнить, приведенный выше пример - только первый, который приходит на ум.