Admin-Linux : Shell : Historiser (logguer) toutes les commandes shell
lundi 28 octobre 2013 à 14:16Voici une astuce permettant d’historiser toutes les commandes tapées dans un shell.
Cet méthode est inspiré d’un article que j’ai vu sur Linux Attitude, j’ai juste rajouté le fait de rediriger ces logs dans un fichier à part avec la mise en place d’un logrotate.
Ajouter dans /etc/profile :
# envoyer la commande dans syslog pour chaque commande AVANT exécution trap 'logger -i -p local5.info -t bash "$USER $(tty): $(fc -ln -1)"' DEBUG OU # envoyer la commande dans syslog pour chaque commande APRES exécution PROMPT_COMMAND='logger -i -p local5.info -t bash "$USER $(tty): $(history 1)"' # fc ne marche pas correctement dans PROMPT_COMMAND |
Rediriger les logs dans un fichier à part, pour cela créer le fichier :
vi /etc/rsyslog.d/shell.conf |
Et ajouter :
local5.* -/var/log/shell.log |
Le tiret (-) devant le fichier de log permet une écriture asynchrone (pas forcément nécessaire, car ça ne risque pas d’impacter les perf, mais bon…)
Créer un fichier logrotate
/etc/logrotate.d/shell |
/var/log/shell.log { rotate 30 daily missingok notifempty delaycompress compress postrotate invoke-rc.d rsyslog rotate > /dev/null endscript create 640 root adm } |
Une fois que tout est prêt, il suffit de relancer rsyslog :
/etc/init.d/rsyslog restart |
Original post of Admin-Linux.Votez pour ce billet sur Planet Libre.
Articles similaires
- Brice Capelle : BASH – Rajouter la date dans l’historique des commandes (18/04/2009)
- Jos : Ubuntu – Connaître les dernières commandes lancées sur le système (05/02/2010)
- Ddmdllt : [shell] Quelques commandes bash en dehors du .bash_history (16/01/2009)
- Damien Pobel : Faire la somme de nombres en shell (11/03/2009)
- Tchouvince : Script Shell: Savoir quelles machines sont allumées (19/02/2008)