【问题标题】:Linux password exipiration with Awk,shadow, and passwordLinux 密码过期与 awk、shadow 和密码
【发布时间】:2015-03-19 14:27:15
【问题描述】:

我正在尝试编写一个输出用户名、真实姓名和帐户到期日期的脚本。 这是我目前的代码。

awk -F: '$3 > 1000 { print $1, $5 }|grep /etc/shadow (print $9)to_date('1970-01-01','YYYY-MM-DD') + numtodsinterval(1244108886,'SECOND')

输入:

smithj:Ep6mckrOLChF.:10063:0:99999:7:::
westf:Ep7uopliokmmm.:1058:0:1087654:7:::
martinezj:GHolimpjk90.:1010:0:1008759:7::

输出:

John Smith           Password expires never
Frank West           Password expires: May 8th 2015
Jose Martinez        Password expires: August 12th 2015

【问题讨论】:

  • 我认为您想将 grep 导入 awk。它还缺少一个关闭 ' 或嵌套 ''' ... 例如:unix.stackexchange.com/questions/169911/…
  • 您能解释一下您遇到的问题吗?
  • 我只是想确保 synatx 是正确的,因为我不确定如何使用管道输出 2 个文件。另外,我不能 100% 确定打印出 &9 和 to 日期会以正常方式显示日期。
  • 我希望脚本只显示实际登录的用户。 Root 永远不会过期 user1 会在 2015 年 3 月 20 日过期
  • 差不多了 - 现在您已经添加了示例输入和预期输出,但您还没有告诉我们如何将一个映射到另一个。输入文件中的smithj如何变成输出中的John Smith?您从smithj:Ep6mckrOLChF.:10063:0:99999:7::: 的哪个字段确定他的密码永不过期?您从westf:Ep7uopliokmmm.:1058:0:1087654:7::: 的哪个字段获得Frank West 并且他的密码在May 8th 2015 到期?我强烈怀疑您实际上有 2 个输入文件要处理,到目前为止您只向我们展示了其中一个,因此我们遗漏了很多难题。

标签: linux awk shadow passwd


【解决方案1】:

假设你有查看影子文件的权限,这将输出用户名、真实姓名和账户到期日期,冒号分隔:

join -t: -o 0,1.5,2.8 <(sort /etc/passwd) <(sort /etc/shadow)

这会将到期日期显示为自纪元以来的天数。这可能会更好:

user=someone
IFS=: read username name < <(getent passwd "$user" | cut -d: -f1,5)
expiry=$(chage -l "$user" | awk -F': ' '/^Account expires/ {print $2}')
printf "%s\n" "$username" "$name" "$expiry"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-12
    • 2023-04-03
    • 1970-01-01
    • 2016-08-30
    • 1970-01-01
    • 1970-01-01
    • 2016-10-07
    • 1970-01-01
    相关资源
    最近更新 更多