如何循环 wtmp 并提取某些数据?

如何循环 wtmp 并提取某些数据?

我使用以下命令将 wtmp(最后一个命令)保存到日志文件中:

last -F | grep -i -e pv -e nv -e pp > last.log

结果:

在此输入图像描述

我想使用 bash 脚本提取用户名(第一个块)和登录时间(第二个块)。我遇到的问题是我不知道如何读取日志的结果。如何检索日志的特定部分。在我看来,这些是行和列。我可以用它来提取数据吗?

问候

答案1

我使用它是因为我想获得 sudoer 用户的真实姓名

在 /etc/bashrc 中添加:

export PROMPT_COMMAND='RETRN_VAL=$?;logger -p local6.debug "$(whoami) [$$]: $(history 1 | sed "s/^[ ]*[0-9]\+[ ]*//" ) [$RETRN_VAL]"'

并在 rsyslog.conf 中(添加记录器 local6 来填充 /var/log/commads.log (将其添加到 boot.log 下面):

sed -ie '/log\/boot.log/a local6.* /var/log/commands.log' /etc/rsyslog.conf    
systemctl restart rsyslog

由于 /var/log/command 就像历史记录,您可以使用 awk 处理它以仅获取必需的字段。

相关内容