Bagaimana cara mengekstrak riwayat masuk?

94

Saya perlu mengetahui riwayat masuk untuk pengguna tertentu (mis. Waktu masuk dan keluar), Bagaimana cara mengekstrak riwayat ini untuk rentang tanggal tertentu di Linux?

shox
sumber

Jawaban:

133

Anda dapat mencoba lastperintah:

last john 

Mencetak riwayat masuk / keluar pengguna john. Padahal berjalan saja

last

mencetak riwayat masuk / keluar semua pengguna.

Izac
sumber
5
Ini hanya mengembalikan nilai untuk bulan ini di sebagian besar distro Linux.
ewwhite
42

Jika Anda perlu melihat lebih jauh dalam sejarah lebih dari satu bulan, Anda dapat membaca /var/log/wtmp.1file dengan lastperintah.

last -f wtmp.1 johnakan menampilkan riwayat login untuk pengguna bulan sebelumnya john.

Output log terakhir tidak terlalu berat dan relatif mudah diurai, jadi saya mungkin akan mem-pipe output ke grep untuk mencari pola tanggal tertentu.

last john | grep -E 'Aug (2[0-9]|30) 'untuk menunjukkan 20-30 Agustus. Atau sesuatu seperti:

last -f /var/log/wtmp.1 john | grep -E 'Jul (1[0-9]|2[0-9]|30) 'untuk memperoleh 10-30 Juli untuk pengguna john.

putih
sumber
21

Bagaimana cara mengekstrak riwayat login untuk rentang tanggal tertentu di Linux?

Contoh untuk mendaftar semua pengguna yang masuk dari 25 hingga 28 Agustus

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 }'untuk mengekstrak waktu tanggal pada kolom yang sesuai dari lastoutput
  • +%s untuk mengubah datetime ke waktu Epoch
  • -ge berdiri lebih besar atau sama
  • -le berdiri kurang dari atau sama

Anda juga dapat melakukannya untuk pengguna tertentu last <username>.

kuanta
sumber
1
Itu ekspresi yang sangat buruk. Tidakkah grep menjadi lebih bersih karena lastoutput cukup mudah dibaca?
ewwhite
3
Bisakah Anda grepmulai dari "15 Agustus 09:00" hingga "25 Agustus 21:00"?
quanta
1
OP tidak meminta rentang waktu.
ewwhite
1
@ewwhite ekspresi itu terlihat indah untuk saya, jika Anda tidak suka tampilan sintaks bash ini mungkin bukan situs untuk Anda.
ekerner
1
@ email Anda benar. Saya akan pergi ke tempat lain;)
ewwhite