grepとlastを使用して特定の日付にログインしたすべてのユーザーを一覧表示する方法

grepとlastを使用して特定の日付にログインしたすべてのユーザーを一覧表示する方法

Lastとgrepを使用して、月曜日にログインしたすべてのユーザーを一覧表示するコマンドまたはコマンドシーケンスを作成する必要があります。私はこれを思い出しましたが、成功しませんでした。

grep -i /var/log/wtmp | grep -i /var/log/wtmp |最終-t 20150731

答え1

last | grep -i Mon-i私のように「Mon」を大文字で書く場合は、対応するオプションは必要ありません)

提案されたソリューションにはいくつかの問題があります。

  • パイプ|表記は、(パイプを介して)最初のプログラム(左)の標準出力を2番目のプログラム(標準入力)に送信します。だからあなたがすることgrep -i /var/log/wtmpはの出力をlast -t 20150731。ログイン情報が出力されるため、last最初に来る必要があります。

  • grep -i /var/log/wtmp標準入力で「/var/log/wtmp」を探します(大文字と小文字を区別しません)。ファイルを検索できますが、grepファイルは検索したい項目の後に続きます(たとえば、grep find_me in_this_fileファイルin_this_file内の "find_me"文字列の検索)。ファイルが指定されていないので、標準入力を探します。最初(パイプ前)の場合、これはlast;lastただし、grep最初の項目の場合は、Enterキーを押してコマンドを実行してから入力する内容です。

  • grepこの場合、実際には「/var/log/wtmp」ではなく「Mon」検索を使用する必要があります。last"/var/log/wtmp"を使用してください。しかし、興味があるのはデータを取得する場所ではなくgrep出力だけです。lastlast

  • last -t 201507312015年7月31日までのすべてのログイン情報が出力されます。 (7月31日を含めるには8月1日を日付として指定する必要があります。)唯一の問題は、last日付にハイフンが必要であることです。〜しない限り合計時間(秒を含む)を指定します。したがって、ハイフンは必要ですlast -t 2015-07-31が、ハイフンは必要ありませんlast -t 20150731000000(両方とも同じ時間、真夜中を指定します)。スタート2015年7月31日)。元の質問には日付ごとにリストを制限する必要があるとは明記されていないため、上記の回答から除外します。日付別に制限する必要がある場合は、last -t 2015-07-317月30日(7月31日を除く)までのリストを使用してください。またはlast -t 2015-08-017月31日現在のリスト。

grep詳細(正規表現とを使用してさまざまな時間形式で実行できるすべての楽しい作業を含む)については、およびlastマニュアルページをご覧ください。man grepman last

上記はログインを逆時間順(最も最近の順)で表示します。別のコマンドを追加して元の質問の制限を超えましたが、結果をコマンドgrepにパイプしtacて結果を時系列(最も最近の最後)として表示することもできますlast | grep -i Mon | tac

答え2

last | grep Mon | awk '{print $1}' | sort -u

関連情報