Câu trả lời:
Nếu bạn cần quay lại lịch sử hơn một tháng, bạn có thể đọc /var/log/wtmp.1
tệp bằng last
lệnh.
last -f wtmp.1 john
sẽ hiển thị lịch sử đăng nhập của tháng trước cho người dùng john
.
Đầu ra nhật ký cuối cùng không quá nặng và tương đối dễ phân tích, vì vậy tôi có thể sẽ chuyển đầu ra sang grep để tìm mẫu ngày cụ thể.
last john | grep -E 'Aug (2[0-9]|30) '
để hiển thị 20-30 tháng 8. Hoặc một cái gì đó như:
last -f /var/log/wtmp.1 john | grep -E 'Jul (1[0-9]|2[0-9]|30) '
để có được ngày 10-30 tháng 7 cho người dùng john
.
Làm cách nào để trích xuất lịch sử đăng nhập cho phạm vi ngày cụ thể trong Linux?
Một ví dụ để liệt kê tất cả người dùng đăng nhập từ 25 đến 28/8:
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 }'
để trích xuất thời gian ngày ở cột tương ứng từ last
đầu ra+%s
để chuyển đổi datetime thành thời gian Epoch-ge
đại diện cho lớn hơn hoặc bằng-le
đứng cho ít hơn hoặc bằngBạn cũng có thể làm điều đó cho người dùng cụ thể với last <username>
.
last
đầu ra khá dễ đọc?
grep
từ "15 tháng 8 09:00" đến "25 tháng 8 21:00" không?