Як витягнути історію входу?


94

Мені потрібно знати історію входу для конкретного користувача (тобто час входу та виходу). Як отримати цю історію для певного діапазону дат у Linux?

Відповіді:


133

Ви можете спробувати lastкоманду:

last john 

Він друкує історію входу / виходу користувача John. Тоді як біг просто

last

друкує історію входу / виходу всіх користувачів.


5
Це повертає значення лише для поточного місяця в більшості дистрибутивів Linux.
ewwhite

42

Якщо вам потрібно повернутися назад в історію, ніж на один місяць, ви можете прочитати /var/log/wtmp.1файл із lastкомандою.

last -f wtmp.1 johnпокаже історію входів для попереднього місяця для користувачів john.

Вихід останнього журналу не надто важкий і порівняно простий для розбору, тому я, мабуть, передавав би результат у грепп, щоб шукати конкретний шаблон дати.

last john | grep -E 'Aug (2[0-9]|30) 'показати 20-30 серпня. Або щось на кшталт:

last -f /var/log/wtmp.1 john | grep -E 'Jul (1[0-9]|2[0-9]|30) 'придбати 10-30 липня для користувача john.


21

Як витягнути історію входу для конкретного діапазону дат у Linux?

Приклад для переліку всіх користувачів, які входять з 25 по 28 серпня:

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 }'витягнути час дати з відповідного стовпця з lastвиводу
  • +%s конвертувати дату в епоху
  • -ge стояти більше або рівне
  • -le стояти менше або рівне

Ви також можете це зробити для конкретного користувача last <username>.


1
Це могутнє-потворне вираження. Чи не буде греп чистішим, оскільки lastвихід досить читабельний?
ewwhite

3
Ви можете grepз "15 серпня 09:00" до "25 серпня 21:00"?
кванта

1
ОП не запитувала часові діапазони.
ewwhite

1
@ewwhite вираз мені виглядає прекрасно, якщо вам не подобається вигляд синтаксису bash, це може бути не сайтом для вас.
ekerner

1
@ekerner Ви маєте рацію. Я піду кудись інше;)
ewwhite
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.