ユーザーエントリとシャットダウンのための小さなシェルスクリプト

ユーザーエントリとシャットダウンのための小さなシェルスクリプト

小さなスクリプトを書く必要があります。 Shell bashスクリプト

タスクは次のとおりです。

「特定の時間間隔の後、システムユーザーに関する情報(誰が入ってきたか、誰が出たか)を出力するプログラムを開発してください。」

私はこれを試みます:

#!/bin/bash
while [ true ]; do
    clear
    date
    who
    sleep 5
done

それからこれを試してください。

#!/bin/bash
while [ true ]; do
    clear
    date
    $USER
    sleep 5
done

しかし、すべては同じままです。日付のみが表示されます。 (私はgit bashを介してWindowsで実行しています)

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

私は何が間違っていましたか?

私が理解しているように、私が指定したコマンドは単にシステムにいる人を示すだけです。しかし、誰が入ってきて誰が出てくるのかをどのように推論できますか?

助けてくれてありがとう。私はこの分野が初めてなのでよく知りません。申し訳ありません。

答え1

ログインしたファイルのみを追跡し、出力をフィルタリングできます。たとえば、次のようになります。

tail -f /var/log/auth.log | egrep "(Accepted publickey|Accepted password|Disconnected from user)"

Debianシステムでは、パスワードまたは公開鍵を使用してsshログインを含むすべての行をキャプチャします。必要に応じて、ログファイル(/var/log/auth.log)のパス/名前と一致する構文を変更する必要があります。

出力は次のようになります。

Sep  6 11:43:28 myserver sshd[19052]: Accepted password for myuser from 85.237.30.84 port 43890 ssh2
Sep  6 11:43:29 myserver sshd[19522]: Disconnected from user myuser 85.237.30.84 port 43890
Sep  6 11:43:51 myserver sshd[20287]: Accepted publickey for myuser from 85.237.30.84 port 38334 ssh2: ED25519 SHA256:/****
Sep  6 11:43:57 myserver sshd[20420]: Disconnected from user myuser 85.237.30.84 port 38334

-fスイッチをオンにすると、tailファイルに到達するまでファイルを追跡でき、read the full fileを置き換えてログファイルに一致するすべての行を一覧表示する<ctrl>-cこともできますtail -fcat

関連情報