Como obter todos os comandos do shell logados

1

Estou executando o Ubuntu Server 12.04 e tentando obter todos os comandos do Shell registrados. Estou tentando com rsyslog que existe por padrão. Eu adicionei " *.* /var/log/everything.log " em rsyslog.con f e 50-default.conf , mas estou apenas obtendo algumas entradas (login, logout, service stop / start) e gostaria de ter tudo ls, cd [path], [Wrong command] .

Preciso modificar algo no rsyslog ou configurar qualquer outro aplicativo para ser detalhado.

Thx SP

    
por Sime 11.10.2012 / 14:56

3 respostas

1

Como alternativa ao uso de bash_history , para capturar todos os comandos inseridos no shell pelo você mesmo e salvá-lo no arquivo, você poderia usar algo como o comando trap em um script ou função e coloque esse código em .bashrc .

Felizmente, exatamente o script que você deseja foi fornecido por Richard Hansen por um tempo atrás nesta resposta , e seu script copia todos os comandos inseridos no bash e os envia (com timestamp) para um arquivo chamado .command_log por padrão. Depois de ter colocado o script em seu .bashrc e ter iniciado o terminal, o script de Richard grava os comandos em .command_log assim que eles são executados, ao contrário do recurso bash_history , que só grava no arquivo após o terminal ser fechado .

O script de Richard irá gravar seus comandos como este em .command_log (embora você esteja usando comandos diferentes para mim):

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

Eu tenho usado por um tempo e descobri que o script de Richard é muito útil; você pode até grep the .command_log e pesquisar o que quiser:

grep -i udisks .command_log 

Então, eu acho que isso é provavelmente o que você quer se você precisa gravar cada coisa digitada no bash; Eu acho incrivelmente útil.

    
por user76204 11.10.2012 / 19:12
1

Depende do que você quer fazer. Se você quiser monitorar tudo o que os usuários executam, então não, isso não é facilmente possível. Existe um conjunto administrativo de programas chamado bos que pode ser usado para monitorar todos os processos em execução .

Se, no entanto, você quiser apenas armazenar todos os comandos que você digitar, então sim, isso está sendo feito para você pelo bash. O Bash armazena um histórico de comandos em ~/.bash_history . Por padrão, no entanto, somente quando um shell sai, o histórico do comando é gravado. Leia a esta página da Web se desejar personalizá-la de modo que a maior parte de sua história é salva.

    
por January 11.10.2012 / 18:44
0

Se você quiser que uma sessão inteira seja registrada (ou seja, ambos os comandos digitados e resultados desses comandos) use:

script

Sem argumentos, ele salvará os resultados em um arquivo no diretório atual chamado "typescript".

script bogus.txt será salvo em "bogus.txt"

Veja man page para a lista completa de comandos man script

    
por john 29.07.2017 / 10:00