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?
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?
Risposte:
Potresti
gioca con PROMPT_COMMAND
se 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_logout
se 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
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.
.profile
file degli utenti e limitare la modifica di questo file.