Ответы:
Журналы входа в Linux в стиле Redhat называются wtmp
( man wtmp
), хранятся /var/log/
по умолчанию, и вы можете получить их, используя utmpdump
(в RHEL6).
[root@server ~]# utmpdump /var/log/wtmp* | awk '$4~"root" {print}'
Utmp dump of /var/log/wtmp
[7] [01320] [ts/0] [root ] [pts/0 ] [192.168.1.101 ] [192.168.1.101 ] [Tue Sep 24 00:31:47 2013 UTC]
[7] [01817] [ts/3] [root ] [pts/3 ] [192.168.1.101 ] [192.168.1.101 ] [Tue Sep 24 00:38:22 2013 UTC]
[7] [01690] [ts/0] [root ] [pts/0 ] [192.168.1.101 ] [192.168.1.101 ] [Tue Sep 24 00:59:04 2013 UTC]
[7] [23641] [ts/0] [root ] [pts/0 ] [192.168.1.101 ] [192.168.1.101 ] [Wed Sep 25 19:12:44 2013 UTC]
[7] [03020] [ts/0] [root ] [pts/0 ] [192.168.1.100 ] [192.168.1.100 ] [Fri Sep 27 21:33:40 2013 UTC]
...
Кажется, last
можно использовать для достижения того, что вы пытаетесь сделать. Вам нужно добавить дату к последней команде, чтобы извлечь информацию.
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
Однако, если вы заинтересованы в поиске информации о конкретном пользователе, вы можете изменить последнюю команду как, last username
а затем направить while
цикл к ней. Это даст вам информацию о логине конкретного пользователя за последний год.
Я протестировал приведенную выше команду, и она отлично работает в моей системе. Я взял вышеупомянутую команду отсюда .
Вы можете изменить дату в команде в соответствии с вашими требованиями.
last
команду - но вы должны делать больше исследований , чем это, и в любом случае, вы на самом деле не указаны , почемуlast
команда не является полезной. также, определите «вошли в систему». Вы хотите отслеживать входы в консоль? SSH логины? Emacs запрещают,telnet
логины? или просто что-нибудь аутентифицирующееся с PAM? быть конкретным .