PROJET AUTOBLOG


Planet-Libre

source: Planet-Libre

⇐ retour index

Admin-Linux : Shell : Historiser (logguer) toutes les commandes shell

lundi 28 octobre 2013 à 14:16

loggue commande shell Shell : Historiser (logguer) toutes les commandes shell

Voici 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

Gravatar de Admin-Linux
Original post of Admin-Linux.Votez pour ce billet sur Planet Libre.