回答:
1か月よりも履歴をさかのぼる必要がある場合/var/log/wtmp.1
は、last
コマンドでファイルを読むことができます。
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) '
ユーザーの7月10日から30日までを取得しますjohn
。
Linuxで特定の日付範囲のログイン履歴を抽出する方法は?
25から28 / Augまでのすべてのユーザーログインを一覧表示する例:
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>
。
last
出力は非常に読みやすいので、grep はきれいになりませんか?
grep
「8月15日09:00」から「8月25日21:00」までできますか?