Làm cách nào để trích xuất lịch sử đăng nhập?


94

Tôi cần biết lịch sử đăng nhập cho người dùng cụ thể (ví dụ: thời gian đăng nhập và đăng xuất), làm cách nào để trích xuất lịch sử này cho một phạm vi ngày cụ thể trong Linux?

Câu trả lời:


133

Bạn có thể thử lastlệnh:

last john 

Nó in ra lịch sử đăng nhập / ra của người dùng john. Trong khi đó chỉ chạy

last

in ra lịch sử đăng nhập / ra của tất cả người dùng.


5
Điều này chỉ trả về các giá trị cho tháng hiện tại trong hầu hết các bản phân phối Linux.
ewwhite

42

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.1tệp bằng lastlệnh.

last -f wtmp.1 johnsẽ 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.


21

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ằng

Bạn cũng có thể làm điều đó cho người dùng cụ thể với last <username>.


1
Đó là một biểu hiện mạnh mẽ-xấu xí. Sẽ không sạch hơn vì lastđầu ra khá dễ đọc?
ewwhite

3
Bạn có thể greptừ "15 tháng 8 09:00" đến "25 tháng 8 21:00" không?
lượng tử

1
OP không yêu cầu khoảng thời gian.
ewwhite

1
@ewwhite biểu thức trông rất đẹp đối với tôi, nếu bạn không thích giao diện của cú pháp bash thì đây có thể không phải là trang web dành cho bạn.
ekerner

1
@ekerner Bạn nói đúng. Tôi sẽ đi nơi khác;)
ewwhite
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.