Câu trả lời:
Nhật ký đăng nhập trên linux kiểu redhat được gọi là wtmp
( man wtmp
), được lưu trữ /var/log/
theo mặc định và bạn có thể truy xuất chúng bằng cách sử dụng utmpdump
(trên 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]
...
Nó dường như last
có thể được sử dụng để đạt được những gì bạn đang cố gắng làm. Bạn cần nối ngày vào lệnh cuối cùng để trích xuất thông tin.
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
Tuy nhiên, nếu bạn quan tâm đến việc tìm kiếm thông tin về một người dùng cụ thể, bạn có thể sửa đổi lệnh cuối cùng last username
và sau đó chuyển while
vòng lặp sang nó. Nó sẽ cung cấp cho bạn thông tin về thông tin đăng nhập của một người dùng cụ thể trong một năm qua.
Tôi đã thử lệnh trên và nó hoạt động hoàn toàn tốt trong hệ thống của tôi. Tôi đã nhận lệnh trên từ đây .
Bạn có thể thay đổi ngày trong lệnh cho phù hợp với yêu cầu của bạn.
last
lệnh - nhưng bạn nên làm nghiên cứu nhiều hơn thế, và trong mọi trường hợp, bạn chưa thực sự xác định lý do tại sao cáclast
lệnh là không hữu ích. Ngoài ra, xác định "đăng nhập". Bạn có muốn theo dõi thông tin đăng nhập giao diện điều khiển? Đăng nhập SSH? Emacs cấm,telnet
đăng nhập? hoặc bất cứ điều gì xác thực với PAM? được cụ thể .