Registra o bash_history no banco de dados privado para todos os usuários?

3

Eu quero ser capaz de configurar um banco de dados MySQL e gravar todos os comandos emitidos no meu servidor por nome de usuário e comando. Isso é possível e, em caso afirmativo, como configurá-lo?

    
por Clay Freeman 17.12.2012 / 15:07

2 respostas

3

Você poderia

  • jogue com PROMPT_COMMAND se você quiser isso em tempo real (cada linha), isso poderia ser algo como:

    PROMPT_COMMAND='echo mysql -c "INSERT $(history 1|sed "s/^ *[0-9]* *//")"'
    

    isso pode ser armazenado no seu $HOME/.bashrc .

  • toque com $HOME/.bash_logout se preferir resumir em cada logout . isso pode permitir que você comece seu próprio script, tente adicionar algo assim ao seu .profile

    if [ "$HISTFILE" ] ;then
        export OHISTFILE="$HISTFILE"
        export HISTFILE=$(mktemp $HOME/.bash_history_XXXXXXXX)
        touch $HISTFILE
        history -a
        cat >>"$OHISTFILE" "$HISTFILE"
        HISTFILE="$OHISTFILE"
        HISTFILESIZE=$HISTFILESIZE
        mysql -c "INSERT ... $(<$HISTFILE).."
        rm $HISTFILE
      fi
    
por 17.12.2012 / 21:23
0

Se você estiver usando bash ou zsh , há um projeto tentando realizar isso: advanced-shell-history .. O seu sistema de compilação ( leia o Makefile antes de ir todo o make install ) pode ser a razão pela qual ele não tem foi incluído em distribuições - estou trabalhando nisso e vou empurrar para cima, em seguida, informar de volta:)

Se você quer um histórico para o shell cli simples do mysql, rlwrap poderia ser útil:

This package provides a small utility that uses the GNU readline library to allow the editing of keyboard input for any other command. Input history is remembered across invocations, separately for each command; history completion and search work as in bash and completion word lists can be specified on the command line.

    
por 28.05.2014 / 12:32