web-dev-qa-db-ja.com

ログイン履歴を抽出するにはどうすればよいですか?

特定のユーザーのログイン履歴(ログインとログアウトの時間など)を知る必要があります。Linuxで特定の日付範囲のこの履歴を抽出するにはどうすればよいですか?

96
shox

lastコマンドを試すことができます:

last john 

ユーザーjohnのログイン/アウト履歴を出力します。ただ走っているのに

last

すべてのユーザーのログイン/アウト履歴を出力します。

135
Izac

1か月以上前の履歴に戻る必要がある場合は、lastコマンドを使用して_/var/log/wtmp.1_ファイルを読み取ることができます。

_last -f wtmp.1 john_は、ユーザーjohnの前月のログイン履歴を表示します。

最後のログ出力は重すぎず、解析が比較的簡単なので、おそらく出力をgrepにパイプして、特定の日付パターンを探します。

last john | grep -E 'Aug (2[0-9]|30) 'は8月20日から30日まで表示します。または次のようなもの:

last -f /var/log/wtmp.1 john | grep -E 'Jul (1[0-9]|2[0-9]|30) 'は、ユーザーjohnの7月10〜30日を取得します。

43
ewwhite

Linuxで特定の日付範囲のログイン履歴を抽出する方法は?

8月25日から28日までのすべてのユーザーログインをリストする例:

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 }'last出力から対応する列の日時を抽出します
  • +%s日付時刻をエポック時刻に変換します
  • -ge以上
  • -leより小さいか等しい

特定のユーザーに対してlast <username>

21
quanta