«Последняя» команда: как показать последний логин пользователя?


19

Как я знаю, lastкоманда показывает последние логины всех пользователей. Но мой компьютер (CentOS) использовался примерно год, и многие пользователи вошли в систему. Я пытался использовать lastкоманду, но она просто показала с июня 2013 года по сентябрь 2013 года.

Мой вопрос: как я могу показать последних пользователей, которые недавно вошли в систему, скажем (с декабря 2013 по январь 2014)?


Не могли бы вы проверить, присутствует ли /var/log/wtmpфайл и время его последнего изменения, используя stat.
MKC

Также обратите внимание, что самые последние записи в выводе последней команды будут сверху.
MKC

в любом случае, чтобы сделать это до дна?
Томас

1
Попробуйтеlast | tac
MKC

1
просто сделайте статистику:stat /var/log/wtmp
MKC

Ответы:


15

lastобычно читает из файла журнала /var/log/wtmpи печатает записи об успешных попытках входа в систему, предпринятых пользователями в прошлом. Вывод таков, что последняя запись вошедших в систему пользователей отображается сверху. В вашем случае, возможно, это вышло из-под контроля из-за этого.

Чтобы проверить, когда файл /var/log/wtmpбыл записан последним, вы можете использовать statкоманду:

stat /var/log/wtmp

Чтобы напечатать вывод в обратном порядке, вы можете направить вывод последней в GNU tac(противоположность cat) следующим образом:

last | tac

16

Вы также можете использовать команду lastlogcommand в Linux. Это дает вам более детальный контроль над диапазонами дат при просмотре журналов пользовательских логинов.

выдержка из справочной страницы lastlog

   lastlog - reports the most recent login of all users or of a given user

пример

Чтобы узнать пользователей, которые вошли в систему за последние 100 дней.

$ lastlog -b 0 -t 100
Username         Port     From             Latest
sam              pts/0    pegasus          Wed Jan  8 20:32:25 -0500 2014
joe              pts/0    192.168.1.105    Thu Dec 12 12:47:11 -0500 2013

Это показывает, что в последний раз эти пользователи вошли в эту систему. Диапазон времени показывает последние 100 дней. До сегодняшнего дня ( -b 0) и после 100 дней назад ( -t 100).

Вы также можете показать всех пользователей, пропустив любой диапазон и просто просмотрев всех пользователей, которые когда-либо входили в систему, и последний раз, когда они входили в систему.


0

Вы можете попробовать этот скрипт:

for user in $( awk -F: '{ print $1}' /etc/passwd)
do
lastlog=$(sudo lsuser -a time_last_login $user | awk -F'=' '{print $NF}')
echo "$user         \c"; perl -le "print scalar localtime($lastlog);"
done

1
Добро пожаловать в Unix.SE. Не могли бы вы объяснить, какие преимущества имеет этот подход по сравнению с существующими ответами, если таковые имеются?
Стивен Китт

Этот сценарий выдаст

Спасибо за информацию; пожалуйста, отредактируйте свой ответ, чтобы упомянуть об этом. Обратите внимание, что вопрос касается CentOS, а не AIX.
Стивен Китт
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.