Linux:システムからすべてのログインログを取得する方法[終了]


12

ユーザーが昨年からシステムにログインしたすべての時間を知りたいですか?コマンド
を使用lastしましたが、役に立ちません。


1
Stack Exchangeへようこそ!ここでは全員がボランティアであることを覚えておいてください。そのため、いくつかの基本的な調査を行ったことが期待されます。lastコマンドを試すことに言及しているため、最初はあるように見えますが、それ以上の調査を行う必要があります。いずれにしても、コマンドが役に立たない理由を実際に指定していませんlast。また、「ログイン」を定義します。コンソールのログインを追跡しますか?SSHログイン?Emacsは禁止、telnetログイン?または単にPAMで認証するものは何ですか?特定
14

回答:


10

redhatスタイルのLinuxのログインログはwtmpman 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]
...

1

それは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

ただし、特定のユーザーに関する情報の検索に関心がある場合は、最後のコマンドをasに変更してlast usernamewhileループをパイプすることができます。特定のユーザーの過去1年間のログイン情報が表示されます。

上記のコマンドをテストしましたが、私のシステムでは完全に正常に動作しました。上記のコマンドをここから受け取りました

コマンドで日付を変更して、要件に合わせることができます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.