我目前正在尝试找出一个命令,该命令将显示 UNIX 系统上用户的最后一次密码更改。
我试过运行命令 passwd -Sa 并给出格式为 00/00/0000 的密码更改日期。但是我只想列出该命令中最后一个用户的日期。我已经尝试将命令传递给 grep,但我似乎无法使我的语法正确。
我正在寻找作为此命令结果的日期输出。
当前命令尝试:
grep $USER | passwd -Sa
Run Code Online (Sandbox Code Playgroud)
对我的错误的任何帮助表示赞赏!
提供更多信息可以获得更好的答案。随便,在 OpenSUSE 上,我看到了
passwd -S -a
Run Code Online (Sandbox Code Playgroud)
为 中的每个条目提供记录/etc/passwd
,如下所示:
thomas PS 03/01/2013 0 99999 7 -1
Run Code Online (Sandbox Code Playgroud)
所以你可以用awk过滤它:
passwd -S -a | awk -v user=$USER '{ if ( $1 == user ) { printf "%s\n", $3; } }'
Run Code Online (Sandbox Code Playgroud)
但是,该passwd
命令想要这样做root
,因此您的脚本必须做一些比使用$USER
变量更优雅的事情(这是针对当前用户的)。它想要的原因root
是它正在读取 的内容/etc/shadow
,该内容不是公开的。
您可以使用chage
,它会显示不同的报告——但在快速检查中,它会提示输入用户的密码(这可能不是您想要的):
该
chage
程序需要可用的影子密码文件。该
chage
命令仅限于root用户,但-l
选项除外,非特权用户可以使用该选项来确定他/她的密码或帐户何时到期。
进一步阅读:
-S
和-a
chage
,但省略密码提示...这听起来像是一个家庭作业,所以:
sort
可以对输入进行数字排序,并且可以根据需要按多个定义的列进行排序。cut
可以使用一组字符来定义列分隔符来打印输入列的子集。a | b
将 command 的输出发送a
到 command b
。head
并tail
分别返回文件的第一行和最后一行。sudo
),您通常无法查询其他用户。您可以通过简单地使用获取当前grep
用户的状态来避免这种情况(以及任何ping)。passwd --status
归档时间: |
|
查看次数: |
32499 次 |
最近记录: |