ユーザーが昨年からシステムにログインしたすべての時間を知りたいですか?last
コマンドを使用しましたが、役に立ちません。
RedhatスタイルのLinuxのログインログはwtmp
(man wtmp
)と呼ばれ、デフォルトで/var/log/
に保存されます。utmpdump
を使用してそれらを取得できます(RHEL6) 。
[root@server ~]# utmpdump /var/log/wtmp* | awk '$4~"root" {print}'
Utmp dump of /var/log/wtmp
[7] [01320] [ts/0] [root ] [pts/0 ] [192.168.1.101 ] [192.168.1.101 ] [Tue Sep 24 00:31:47 2013 UTC]
[7] [01817] [ts/3] [root ] [pts/3 ] [192.168.1.101 ] [192.168.1.101 ] [Tue Sep 24 00:38:22 2013 UTC]
[7] [01690] [ts/0] [root ] [pts/0 ] [192.168.1.101 ] [192.168.1.101 ] [Tue Sep 24 00:59:04 2013 UTC]
[7] [23641] [ts/0] [root ] [pts/0 ] [192.168.1.101 ] [192.168.1.101 ] [Wed Sep 25 19:12:44 2013 UTC]
[7] [03020] [ts/0] [root ] [pts/0 ] [192.168.1.100 ] [192.168.1.100 ] [Fri Sep 27 21:33:40 2013 UTC]
...
last
は、あなたがやろうとしていることを達成するために使用できるようです。情報を抽出するには、最後のコマンドに日付を追加する必要があります。
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
ただし、特定のユーザーに関する情報の検索に関心がある場合は、最後のコマンドをlast username
として変更し、while
ループをそれにパイプすることができます。特定のユーザーの過去1年間のログイン情報が表示されます。
上記のコマンドをテストしましたが、私のシステムでは完全に正常に動作しました。上記のコマンドを here から取得しました。
コマンドの日付は、要件に合わせて変更できます。