web-dev-qa-db-fra.com

Comment extraire l'historique de connexion?

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?

96
shox

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.

135
Izac

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.

43
ewwhite

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 égal

Vous pouvez également le faire pour un utilisateur spécifique avec last <username>.

21
quanta