Posso obter os comandos do histórico executados no bash nos últimos 15 minutos?

4

Eu quero colocar em prática um cron job que me envie uma notificação sobre um comando específico executado nos últimos 15 minutos. Eu posso obter o histórico junto com o timestamp usando export HISTTIMEFORMAT='%F %T' , mas não consegui descobrir como filtrá-lo de acordo com os comandos executados nos últimos 15 minutos apenas. Alguém pode me sugerir uma maneira de fazer isso?

    
por ishan 13.04.2017 / 13:15

1 resposta

11

É mais fácil usar um formato de hora diferente (o que você pode, já que definir HISTTIMEFORMAT para qualquer valor é suficiente para o bash controlar o tempo). Então, use o timestamp Unix e a diferença entre agora e então:

HISTTIMEFORMAT='%s ' history |  awk -v now=$(date +%s) '(now - ) < 15*60'

date +%s é o timestamp atual do Unix, e a segunda coluna da saída do histórico é o campo HISTTIMEFORMAT , portanto, verifica se a diferença em segundos é menor que 15 minutos.

No entanto, se sua intenção é monitorar o uso de comandos, então este não é o melhor caminho para isso. Setup auditd em vez disso (ele pode ser configurado para observar a execução de comandos).

    
por muru 13.04.2017 / 13:24