Registra bash_history su database privato per tutti gli utenti?


3

Voglio essere in grado di configurare un database MySQL e registrare tutti i comandi emessi sul mio server per nome utente e comando. È possibile, e se sì, come lo configurerei?


vuoi questo in tempo reale o periodicamente aggiornato, ad esempio una volta al giorno? Suggerirei una revisione regolare del file della cronologia degli utenti, ma ti lascerà la possibilità che gli utenti rimuovano voci specifiche dai loro file della cronologia. Ma c'è uno strumento chiamato script e può registrare tutti i comandi in un file txt. È possibile aggiungere il comando script al .profilefile degli utenti e limitare la modifica di questo file.
mnmnc,

Risposte:


3

Potresti

  • gioca con PROMPT_COMMANDse lo desideri in tempo reale (ogni riga), potrebbe essere qualcosa del tipo:

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

    questo potrebbe essere memorizzato nel tuo $HOME/.bashrc.

  • gioca con $HOME/.bash_logoutse preferisci il digest ad ognuno logout. questo potrebbe farti iniziare il tuo script, provare ad aggiungere qualcosa di simile al tuo.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


0

Se stai usando bash o zsh , c'è un progetto che sta cercando di ottenere questo risultato: advanced-shell-history .. Il suo sistema di compilazione disgustoso ( leggi il Makefile prima di andare tutto make install) potrebbe essere il motivo per cui non è stato incluso nelle distribuzioni - ci sto lavorando e spingerà a monte, quindi riporto :)

Se vuoi una cronologia per la semplice shell mysql cli, rlwrap potrebbe essere utile:

Questo pacchetto fornisce una piccola utility che utilizza la libreria readline GNU per consentire la modifica dell'input da tastiera per qualsiasi altro comando. La cronologia di input viene ricordata tra le invocazioni, separatamente per ciascun comando; il completamento della cronologia e la ricerca funzionano come in bash e gli elenchi di parole di completamento possono essere specificati sulla riga di comando.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.