Como posso fazer bash para logar os comandos do shell para o syslog?

6

O Bash 4.1 é capaz de registrar o histórico no syslog. No entanto eu não consigo fazer isso funcionar no FreeBSD 8.
Eu tentei re-compilar bash de portas com -DWITH_SYSLOG= , mas sem sucesso. Alguém já conseguiu fazer o log funcionar no FreeBSD? Como sobre o Linux?

    
por Eugene Yarmash 20.10.2011 / 15:33

2 respostas

4

A melhor coisa a fazer seria ativar a auditoria, que permitirá gravar todos os comandos, independentemente do shell usado.

    
por 20.10.2011 / 16:30
2

tente isto:

export HISTTIMEFORMAT="%Y-%m-%d %T "
export PROMPT_COMMAND='trap "" 1 2 15; history -a >(tee -a ~/.bash_history | while read line; do if [[ $line =~ ^#[0-9]*$ ]]; then continue; fi; logger -p user.info -t "bash[$$]" "($USER) $line"; done); trap 1 2 15;'

isso faz o registro E evita o registro de registros de data e hora que são usados para o arquivo de histórico do bash. O trap é necessário, já que o bash enviará os sinais para o "subjob" depois de pressionar strg + c várias vezes (testado com o bash 4.3). isso forçará o logout do usuário atual (por exemplo, logado com o sudo)

    
por 12.10.2014 / 23:23