колотите журнал истории все команды системному журналу

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

 function log2syslog
 {
     declare COMMAND
     COMMAND=$(fc -ln -0)
     logger -p local1.notice -t bash -i -- "${USER}:${COMMAND}"
 }
 trap log2syslog DEBUG

 PROMPT_COMMAND='history -a >(tee -a ~/.bash_history | logger -t "$USER[$$] $SSH_CONNECTION")'

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

1
задан 8 June 2018 в 18:52

2 ответа

Нет необходимости использовать fc, если вам просто нужна текущая командная строка, так как переменная оболочки BASH_COMMAND содержит именно это. Я бы просто перехватил сигнал DEBUG и использовал бы эту переменную , как и раньше , например:

trap 'echo "$USER":"$BASH_COMMAND" >>/path/to/log' DEBUG

Это также имеет то преимущество, что он ничего не записывает в журнал, если Вы просто нажимаете Enter - fc просто читает последнюю запись из списка истории. К сожалению, я не смог проверить вашу команду logger в моей системе, но вы звучите так, как будто она работала нормально, поэтому это также должно работать:

trap 'logger -p local1.notice -t bash -i -- "$USER":"$BASH_COMMAND"' DEBUG

Пример выполнения

Примечание как alias похоже на ls, записываются пустые строки ( Enter ) и команды опечаток.

$ trap 'echo "$USER":"$BASH_COMMAND" >>/path/to/log' DEBUG
$ uname
Linux
$ pwd
/home/dessert
$ hostname
dessert’s plowhorse
$ ls
dir1 file1 file2
$ 
$ 
$ bahs
No command 'bahs' found, did you mean:
 Command 'bash' from package 'bash' (main)
 Command 'bats' from package 'bats' (universe)
bahs: command not found
$ cat /path/to/log
dessert:uname
dessert:pwd
dessert:hostname
dessert:ls --color=auto
dessert:bahs
dessert:cat /path/to/log
2
ответ дан 3 December 2019 в 07:24

У меня есть очень похожая проблема. Так как я не хочу создавать дубликаты для той же проблемы, я собираюсь отправить мой в здесь также.

Я использовал синтаксис регистратора прерывания от десерта, но встречаюсь с очень нечетным последующим сообщением в моем/var/log/messages файле

Я добавил эту строку в конце своего/etc/profile:

trap 'logger -p local1.notice -t bash -i -- "${USER}":"$BASH_COMMAND"' DEBUG

Когда я теперь выслеживаю/var/log/messages в отдельном окне терминала, оно показывает мне команду, которую я выполнил в первом терминале и добавляю вторую строку, которая похожа на это:

Jun 13 11:42:34 vm-centos bash[1521]: root:nano /etc/profile
Jun 13 11:43:14 vm-centos bash[1524]: root:printf "\033]0;%s@%s:%s\007" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"

Я предполагаю, что вторая строка хочет сказать мне, что существует некоторая ошибка, но я не вижу ошибки. У Вас есть идея, как я мог избавиться от второй строки с printf?

Благодарность заранее

1
ответ дан 3 December 2019 в 07:24

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

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