Как записать взаимодействие оболочки из фонового скрипта - PullRequest
0 голосов
/ 10 января 2019

Я хочу написать фоновый сценарий 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, на самом деле не то, что я хотел бы выполнить, приведенный выше пример - только первый, который приходит на ум.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...