Estou tentando capturar todo o comando do shell do Linux para algum arquivo. Eu tentei usar o serviço auditd, mas ele não está me dando a saída que eu quero.
Pesquisei um pouco e encontrei uma solução legal .
Etapa 1: vi / etc / bashrc e anexe a seguinte linha no final:
export PROMPT_COMMAND='RETRN_VAL=$?;logger -p local6.debug "$(whoami) [$$]: $(history 1 | sed "s/^[ ]*[0-9]\+[ ]*//" ) [$RETRN_VAL]"'
Etapa 2:
Defina o syslogger para interceptar o local6 em um arquivo de registro, adicionando esta linha no arquivo /etc/rsyslog.conf:
local6.* /var/log/cmdlog.log
A saída é:
Jan 10 11:05:20 itdev-server eddiem: root [7310]: vim /etc/rsyslog.conf [0]
Esta é uma solução muito boa e se encaixa no que eu preciso, mas tenho alguns problemas que não posso corrigir.
1) Como ignorar o botão "Enter", toda vez que eu pressionar o botão Enter, ele registra o último comando.
2) Quando você faz ssh em outro servidor, ele não grava o comando ssh até você desconectar a sessão, mas o mais importante é que ele não captura os comandos que foram executados no host remoto.
Se alguém tiver alguma solução ou solução alternativa, será ótimo!
Agradecemos antecipadamente.
EddieM