Как записать все команды оболочки

Я использую Ubuntu Server 12.04 и пытаюсь зарегистрировать все команды Shell. Я пытаюсь с rsyslog, что там по умолчанию. Я добавил «*.* /var/log/everything.log» в rsyslog.con f и 50-default.conf, но я получаю только несколько записей (вход, выход из системы, остановка / запуск службы) и хотел бы иметь все ls, cd [path], [Wrong command].

Должен ли я что-то изменить в rsyslog или задать для любого другого приложения подробные сведения?

Thx SP

1
задан 11 October 2012 в 18:09

3 ответа

Зависит от того, что вы хотите сделать. Если вы хотите отслеживать все, что запускают пользователи, то нет, это не легко возможно. Существует административный набор программ под названием bos , который можно использовать для мониторинга всех запущенных процессов.

Если, однако, вы просто хотите сохранить все команды, которые вы вводите , то да, это делается для вас с помощью bash. Bash хранит историю команд в ~/.bash_history. Однако по умолчанию только при выходе из оболочки записывается история команд. Прочтите эту веб-страницу, если вы хотите настроить ее так, чтобы большая часть вашей истории сохранялась.

0
ответ дан 11 October 2012 в 18:09

Если вы хотите, чтобы весь сеанс был зарегистрирован (т. Е. Обе команды набраны И результаты этих команд), используйте:

script

Без аргументов, он сохранит результаты в файл в текущем каталоге под названием «машинопись».

script bogus.txt сохранит в «bogus.txt»

См. Справочную страницу для полного списка команд man script

0
ответ дан 11 October 2012 в 18:09

В качестве альтернативы использованию bash_history, чтобы захватить каждую команду, введенную в оболочку самим , и сохранить ее в файл, вы можете использовать что-то вроде команды trap в скрипте или функции и разместить этот код в .bashrc.

К счастью, точно нужный сценарий был предоставлен Ричардом Хансеном некоторое время назад в этом ответе , и его сценарий копирует каждую команду, введенную в bash и отправляет их (с отметкой времени) в файл с именем .command_log по умолчанию. После того, как вы поместили его скрипт в ваш .bashrc и запустили терминал, скрипт Ричарда записывает команды в .command_log, как только они выполняются, в отличие от функции bash_history, которая записывает в файл только после закрытия терминала ,

Сценарий Ричарда запишет ваши команды, например, в .command_log (хотя вы будете использовать разные команды для меня):

2012-10-02T18:02:11+0100 /dev/pts/2 gksudo truecrypt
2012-10-02T21:52:03+0100 /dev/pts/2 xrandr -s 1280x1024
2012-10-03T00:16:52+0100 /dev/pts/2 mount
2012-10-03T00:17:12+0100 /dev/pts/2 udisks --unmount /dev/sdb1
2012-10-03T00:17:46+0100 /dev/pts/2 udisks --detach /dev/sdb

Я использовал его некоторое время и обнаружил, что Сценарий Ричарда очень полезен; Вы можете даже grep .command_log и искать все, что хотите:

grep -i udisks .command_log 

Итак, я думаю, что это, вероятно, то, что вы хотите, если вам нужно записать каждую вещь, введенную в bash; Я нахожу это невероятно полезным.

0
ответ дан 11 October 2012 в 18:09

Другие вопросы по тегам:

Похожие вопросы: