Есть ли программа, которая отображает сообщение входа в систему, отформатированное так:

Last login: Wed Oct 24 16:40:33 2012

Или я должен написать свою собственную программу / сценарий? Мне было интересно, есть ли команда, которая запускается ядром Linux (или кем бы то ни было) для этого.

2 ответа2

2

Ядро не отслеживает информацию для входа. Вы можете настроить PAM (/etc/pam.d) для вызова модуля pam_lastlog.so , который показывает именно то, что вы хотите:

session optional pam_lastlog.so noterm nohost

Или немного более многословно:

session optional pam_lastlog.so

Или тот, который также печатает неудачные логины:

session optional pam_lastlog.so showfailed

В Fedora это может быть /etc/pam.d/system-login или /etc/pam.d/gdm-password , я не уверен.

Информация хранится в /var/log/wtmp и /var/log/lastlog .

0

Я написал код, чтобы сделать это для меня:

LINE=`lastlog -u $USER | head -n2 | tail -n1`;
WORDS=`echo "$LINE" | wc -w`;
if [ "x$WORDS" = "x9" ]; then
  echo "$LINE" | awk '{ printf "Last login: %s %s  %s %s %s from %s\n", $4, $5, $6, $7, $9, $3 }';
else
  echo "Unsupported case.";
fi;

Это не работает для не удаленных входов в систему, но я запускаю код на автономном сервере, поэтому 99,9% входов в систему будут удаленными входами; остальные 0,1% будут, когда я "прикреплю голову", чтобы исправить проблемы с ssh или аналогичные.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .