J'ai besoin de connaître l'historique de connexion pour un utilisateur spécifique (c'est-à-dire l'heure de connexion et de déconnexion), comment puis-je extraire cet historique pour une plage de dates spécifique sous Linux?
Vous pouvez essayer la commande last
:
last john
Il imprime l'historique de connexion/déconnexion de l'utilisateur john. Alors que courir juste
last
imprime l'historique de connexion/déconnexion de tous les utilisateurs.
Si vous devez remonter plus loin dans l'historique d'un mois, vous pouvez lire le fichier /var/log/wtmp.1
Avec la commande last
.
last -f wtmp.1 john
Affichera l'historique des connexions du mois précédent pour l'utilisateur john
.
La dernière sortie du journal n'est pas trop lourde et relativement facile à analyser, donc je dirigerais probablement la sortie vers grep pour rechercher un modèle de date spécifique.
last john | grep -E 'Aug (2[0-9]|30) '
pour afficher les 20 et 30 août. Ou quelque chose comme:
last -f /var/log/wtmp.1 john | grep -E 'Jul (1[0-9]|2[0-9]|30) '
pour acquérir du 10 au 30 juillet pour l'utilisateur john
.
Comment extraire l'historique de connexion pour une plage de dates spécifique sous Linux?
Un exemple pour lister tous les utilisateurs connectés du 25 au 28/août:
last | while read line
do
date=`date -d "$(echo $line | awk '{ print $5" "$6" "$7 }')" +%s`
[[ $date -ge `date -d "Aug 25 00:00" +%s` && $date -le `date -d "Aug 28 00:00" +%s` ]] && echo $line
done
awk '{ print $5" "$6" "$7 }'
pour extraire la date et l'heure de la colonne correspondante de la sortie last
+%s
pour convertir le datetime en Epoch time-ge
représente supérieur ou égal-le
représente inférieur ou égalVous pouvez également le faire pour un utilisateur spécifique avec last <username>
.