97 votes

Comment extraire l'historique des connexions ?

J'ai besoin de connaître l'historique des connexions d'un utilisateur spécifique (c'est-à-dire les temps de connexion et de déconnexion), Comment extraire cet historique pour une période spécifique sous Linux ?

138voto

Izac Points 1758

Vous pouvez essayer le last commandement :

last john 

Il imprime l'historique des entrées et sorties de l'utilisateur John. Alors qu'en exécutant seulement

last

imprime l'historique des entrées et sorties de tous les utilisateurs.

5 votes

Dans la plupart des distributions Linux, cela ne renvoie que les valeurs du mois en cours.

44voto

ewwhite Points 193555

Si vous souhaitez remonter plus loin dans l'histoire qu'un mois, vous pouvez lire le rapport de la Commission européenne sur l'avenir de l'Europe. /var/log/wtmp.1 avec le fichier last commandement.

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 j'enverrais probablement la sortie vers grep pour rechercher un modèle de date spécifique.

last john | grep -E 'Aug (2[0-9]|30) ' à montrer du 20 au 30 août. Ou quelque chose comme ça :

last -f /var/log/wtmp.1 john | grep -E 'Jul (1[0-9]|2[0-9]|30) ' pour acquérir le 10-30 juillet pour l'utilisateur john .

22voto

quanta Points 49664

Comment extraire l'historique des connexions pour une période spécifique sous Linux ?

Un exemple pour lister tous les utilisateurs qui se sont 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 last sortie
  • +%s pour convertir une date en temps d'époque
  • -ge signifie supérieur ou égal
  • -le signifie "inférieur ou égal à".

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

1 votes

C'est une expression très moche. Grep ne serait-il pas plus propre puisque last est assez lisible ?

3 votes

Pouvez-vous grep du "15 août 09:00" au "25 août 21:00" ?

1 votes

Le PO n'a pas demandé de fourchette de temps.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X