Étiquette : .bash_profile

6 juin 2015 /

Pour avoir l’heure et la date en face de chaque commande de l’historique, il suffit de définir le paramètre HISTTIMEFORMAT dans ~/.bash_profile:

 echo 'HISTTIMEFORMAT="%Y/%m/%d @ %T "' >> ~/.bash_profile

Puis on recharge la configuration:

source ~/.bash_profile

%d = Jour
%m = Mois
%Y = Année sur 4 chiffres
%T = Heure complète

Sur un serveur où plusieurs administrateurs pourraient ce connecter, on peut rediriger la sortie de la commande history dans un fichier spécifique avec une rotation.

Ainsi il faut ajouter dans /etc/profile les lignes suivants:

# 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

Puis on met en place une redirection des logs dans un fichier à part, pour cela créer le fichier shell.conf:

vi /etc/rsyslog.d/shell.conf

Et on y met:

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…)

Il ne reste plus qu’à créer un fichier de configuration pour logrotate:

vi /etc/logrotate.d/shell

Et on y met ça:

/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 n’y a plus qu’a relancer rsyslog :

/etc/init.d/rsyslog restart