usando o comando history com ssh e obtendo a saída com time stamps

0

Basicamente eu quero obter um registro de todos os comandos executados no meu servidor ssh, com seus horários. Os códigos que tentei são:

ssh user@ip 'export HISTFILE=~/.bash_history; set -o history; history'

Eu tenho todos os comandos, mas eu não consigo selos de tempo com isso, o que é esperado, eu acho.

Quando faço o primeiro login e uso o comando history, recebo todos os detalhes, incluindo a data e a hora. Eu gostaria de obter todos os detalhes quando eu uso o comando history com o ssh. Como devo fazer isso? OH sim, e se possível eu gostaria de obter o histórico sem precisar exportar o HISTFILE. (SE POSSÍVEL) A instalação de pacotes não é uma opção.

    
por user1356163 11.05.2012 / 14:31

2 respostas

1

Duas coisas:

  1. Você também precisa exportar, por exemplo,

    HISTTIMEFORMAT='%F %T '
    

    para definir os tempos do histórico de comandos de exibição.

  2. Se você não definir a variável de ambiente HISTTIMEFORMAT ao usar uma sessão, os tempos de comando não serão salvos e você obviamente não ser capaz de vê-los. Por padrão, a hora atual será impressa como o tempo de comando para cada comando sem um indicador de tempo.

Se você observar o arquivo ~/.bash_history , poderá ver se os carimbos de data / hora foram ativados para as sessões. Todas as outras linhas começarão com # seguido pelo horário da época do próximo comando.

    
por 11.05.2012 / 15:23
0

Se você sabe que o shell é bash e o arquivo de histórico é .bash_history , uma busca simples deve ser suficiente.

scp user@ip:.bash_history .

Para os dados de tempos,

  • O arquivo .bash_history carregará informações de tempo dos dados do histórico de todas as sessões que estavam sendo executadas com HISTTIMEFORMAT configurado
  • Acho que a atualização do histórico conterá registros de data e hora para toda a sessão que tivessem uma configuração HISTTIMEFORMAT a qualquer momento dentro dela
  • O que nos leva a uma pequena restrição
    • se você tiver o bash profile para esses logins de usuários remotos com o export HISTTIMEFORMAT='some format' , será bom apenas puxar o arquivo .bash_history
    • else, rodar remotamente o comando history de qualquer forma não vai te dar os dados do tempo - simplesmente porque ele não está armazenado (para .bash_history ) em primeiro lugar; ele é perdido no final de cada sessão e somente a lista de comandos é salva

Espero que o último ponto clarifique a viabilidade de obter dados sobre o tempo.
A boa notícia é que, se você puder ver os dados de horário das sessões anteriores quando fizer login, ele será configurado e você não precisará de nenhuma alteração. Se não, é apenas uma questão de inserir o export no bash profile sendo usado - nenhuma instalação é necessária.

ps: Sugiro que, se a sua questão estiver centrada no shell bash , você adiciona isso como uma tag.

    
por 11.05.2012 / 15:08