用户进出的小 shell 脚本

用户进出的小 shell 脚本

我需要编写一个小脚本 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可以让您跟踪文件直到您点击,<ctrl>-c您还可以通过替换tail -fcat读取整个文件来列出日志文件中的所有匹配行。

相关内容