特定のユーザーのログイン履歴(ログインとログアウトの時間など)を知る必要があります。Linuxで特定の日付範囲のこの履歴を抽出するにはどうすればよいですか?
last
コマンドを試すことができます:
last john
ユーザーjohnのログイン/アウト履歴を出力します。ただ走っているのに
last
すべてのユーザーのログイン/アウト履歴を出力します。
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日を取得します。
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>
。