Adiciona BASHPID ao histórico?

4

Muitas vezes tenho várias sessões em execução a qualquer momento. Isso às vezes leva a problemas ao tentar reconstruir o trabalho usando o histórico. Como resultado, eu estava pensando que seria útil incluir o $ BASHPID de alguma forma para que eu pudesse classificar por shell e depois pelo tempo. Minha tentativa ingênua foi tentar

export HISTTIMEFORMAT="$BASHPID %Y %m %d - %H:%M:%S| "

Mas tudo isso adiciona o $ BASHPID do shell atual à saída de 'history'.

Uma pesquisa por HISTTIMEFORMAT e $ BASHPID não retornou nada. Quaisquer sugestões sobre como obter esse tipo de comportamento?

    
por mikemtnbikes 03.07.2017 / 22:55

2 respostas

3

Minha estratégia é adicionar a /etc/bash.bashrc a seguinte linha:

readonly PROMPT_COMMAND='history -a >(logger -t "cmdline $USER[$PWD] $SSH_TTY $SSH_CONNECTION")'

Em seguida, em /etc/rsyslog.conf :

*.* @syslogserver:514

Eu prefiro essa abordagem do que fazer login em um único arquivo, como:

  • arquivos são girados (ou seja, não crescem muito)
  • o usuário não exclui o histórico
  • cria uma trilha de registro remota resistente a adulteração / pirataria de um servidor
  • O log de rotação no servidor syslog remoto pode ser alterado para manter alguns meses de log
  • syslog-ng permite que você tenha logs de arquivos separe por endereço IP de registro
  • é tudo em um ponto central e você não precisa estar inserindo várias veiculações para entender o que está acontecendo
por 04.07.2017 / 10:00
2

Você precisa de algo como "bash eternal history".
Há uma boa descrição aqui para que funcione.

Essa solução ainda está faltando no PID, o que poderia ser adicionado com as ideias daqui .

Principalmente:

export HISTTIMEFORMAT="%s "
PROMPT_COMMAND="${PROMPT_COMMAND:+$PROMPT_COMMAND ; }"' \
               echo $$ $USER "$(history 1)" >> ~/.bash_eternal_history'

Que está usando o $PROMPT_COMMAND para gerar um:

$PID $USER $LAST_COMMAND

saída por comando executado.

    
por 04.07.2017 / 00:52