小さなスクリプトを書く必要があります。 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 -f
。cat