Я использую Ubuntu Server 12.04 и пытаюсь зарегистрировать все команды Shell. Я пытаюсь с rsyslog
, что там по умолчанию. Я добавил «*.* /var/log/everything.log
» в rsyslog.con
f и 50-default.conf
, но я получаю только несколько записей (вход, выход из системы, остановка / запуск службы) и хотел бы иметь все ls, cd [path], [Wrong command]
.
Должен ли я что-то изменить в rsyslog или задать для любого другого приложения подробные сведения?
Thx SP
Зависит от того, что вы хотите сделать. Если вы хотите отслеживать все, что запускают пользователи, то нет, это не легко возможно. Существует административный набор программ под названием bos , который можно использовать для мониторинга всех запущенных процессов.
Если, однако, вы просто хотите сохранить все команды, которые вы вводите , то да, это делается для вас с помощью bash. Bash хранит историю команд в ~/.bash_history
. Однако по умолчанию только при выходе из оболочки записывается история команд. Прочтите эту веб-страницу, если вы хотите настроить ее так, чтобы большая часть вашей истории сохранялась.
Если вы хотите, чтобы весь сеанс был зарегистрирован (т. Е. Обе команды набраны И результаты этих команд), используйте:
script
Без аргументов, он сохранит результаты в файл в текущем каталоге под названием «машинопись».
script bogus.txt
сохранит в «bogus.txt»
См. Справочную страницу для полного списка команд man script
В качестве альтернативы использованию 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; Я нахожу это невероятно полезным.