ログインしたユーザーのリスト(名前、端末、ログイン時間)

ログインしたユーザーのリスト(名前、端末、ログイン時間)

現在端末にログインしているユーザーのリストを印刷しようとしています。次のようにする必要があります。

ここに画像の説明を入力してください。

これまで私はこれだけを得ました:

ここに画像の説明を入力してください。

端末とログイン時間がありません。どのように表示できますか?これが私が今まで得たものです:

#!/bin/bash
NOWDATE=$(date +"%Y-%m-%d")
NOWTIME=$(date +"%T")
USERS=$(who | cut -d " " -f1)
TERMINAL=0
LOGIN=0

for u in $USERS
do
    echo "$NOWDATE""_""$NOWTIME User: " $u
done

ベストアンサー1

出力の解析wたぶんそれより良いかもしれません。who。ログイン時間を示す代表的なデータは次のとおりです。

$ who
tom      pts/1        2015-11-15 06:39 (michener:S.0)
$ w
 06:40:10 up  1:04,  1 user,  load average: 0.00, 0.01, 0.05
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
tom      pts/1    michener:S.0     06:39    2.00s  0.03s  0.00s w

これらはそれよりも優れていますfinger。これは教室の練習なので、データの解析作業はOPに任せられます。ヒントとして、awkはフィールドを1行以上で印刷できます。

  • wBEGIN通常、awkスクリプトに行番号またはステータスを設定するセクションを含めることで、出力を処理できます。
  • その後、各行のデフォルトの動作(パターンなしで中括弧のみを使用)は、行番号を増やすことです。
  • 行番号を使用して最初の行を具体的に処理します(この場合はスキップ:OP)。可能タイトルのユーザー数を報告する必要がありますが、OPの例では使用されません)を含む行をスキップしますUSER
  • その後、OPの必要に応じて各行を印刷できます。 awkこれ以上データがない場合は終了します。これを行うためにユーザーの数を知る必要はありません。

OPに通知された場合使用 whoには、追加情報を一覧表示するオプションがあります。たとえば、次のようになります。

$ who -l -u
LOGIN    tty5         2015-11-15 05:36              3670 id=5
LOGIN    tty6         2015-11-15 05:36              3671 id=6
LOGIN    tty4         2015-11-15 05:36              3669 id=4
LOGIN    tty3         2015-11-15 05:36              3668 id=3
LOGIN    tty2         2015-11-15 05:36              3667 id=2
LOGIN    tty1         2015-11-15 05:36              3666 id=1
tom      pts/1        2015-11-15 06:39 00:06        5780 (michener:S.0)
tom      pts/2        2015-11-15 06:52   .          6078 (michener:S.1)

端末名とログイン回数が再表示されます。

おすすめ記事