Захват команд оболочки Linux в файл

Я пытаюсь захватить всю команду Linux Shell в какой-то файл. Я попытался использовать службу auditd, но это не дает мне результат, который я хочу.

Я немного искал и нашел хорошее решение .

Шаг 1: vi / etc / bashrc и добавьте следующую строку в конец:

export PROMPT_COMMAND='RETRN_VAL=$?;logger -p local6.debug "$(whoami) [$$]: $(history 1 | sed "s/^[ ]*[0-9]\+[ ]*//" ) [$RETRN_VAL]"' 

Шаг 2:

Установите syslogger для ловушки local6 в файл журнала, добавив эту строку в файл /etc/rsyslog.conf:

 local6.* /var/log/cmdlog.log 

Выход:

Jan 10 11:05:20 itdev-server eddiem: root [7310]: vim /etc/rsyslog.conf [0]

Это очень хорошее решение и подходит для меня, но у меня есть некоторые проблемы, которые я не могу исправить.

1) Как игнорировать кнопку «Ввод», каждый раз, когда я нажимаю кнопку «Ввод», она регистрирует последнюю команду.

2) Когда вы ssh на другой сервер, он не записывает команду ssh до тех пор, пока вы не отключите сеанс, но что более важно, он не отображает команды, запущенные на удаленном хосте.

Если у кого-то есть какое-то решение или обходное решение, это будет здорово!

Заранее спасибо.

EddieM

Команда script может быть полезна для вас. Он фиксирует все в сеансе и записывает его в файл (по умолчанию используется typescript ).

 $ script Script started, file is typescript $ date 10 Jan 2016 12:45:59 $ id uid=1000(roaima) gid=50(staff)... $ exit exit Script done, file is typescript $ sed 's/^/| /' typescript # cat typescript, with "|" on front of each line | Script started on 10 Jan 2016 12:45:56 | $ date | 10 Jan 2016 12:45:59 | $ id | uid=1000(roaima) gid=50(staff)... | $ exit | exit | | Script done on 10 Jan 2016 12:46:03