请教一个查看用户密码过期时间的 shell 脚本

2020-09-03 10:15:36 +08:00
 king1688888888
想通过一个简单的 shell 脚本,友好地显示查看密码修改时间、用户密码过期时间等,输出效果如下:

#root
密码修改时间:xxx
密码过期时间:xxx

#nginx
密码修改时间:xxx
密码过期时间:xxx

我的思路是先把具有登陆权限的用户过滤出来,再对每个用户使用 chage -l 过滤出密码修改时间、用户密码过期时间,下面的代码只是把每个用户的密码过期时间直接打印出来,请大佬们帮帮忙,实现友好显示相关内容。

#!/bin/bash
export LANG="en_US.UTF-8"
USER=$(grep "/bin/bash" /etc/passwd | awk -F ":" '{print $1}')

for TIME in $USER
do
chage -l $TIME | grep -w "Password expires" | awk -F ":" '{print $2}' | sed 's/^[ \t]*//;s/[ \t]*$//'
done
2080 次点击
所在节点    Linux
7 条回复
zunxiongchen
2020-09-03 11:06:32 +08:00
试下这个吧

#!/bin/bash
export LANG="en_US.UTF-8"
USER=$(grep "/bin/bash" /etc/passwd | awk -F ":" '{print $1}')

echo "Username:PasswordExpires:LastPasswordChangeDate"
for TIME in $USER
do
echo -e "$TIME:\c"
PX=`chage -l $TIME | grep -w "Password expires" | awk -F ":" '{print $2}' | sed 's/^[ \t]*//;s/[ \t]*$//'`
echo -e "$PX:\c"
chage -l $TIME | grep -w "Last password change" | awk -F ":" '{print $2}' | sed 's/^[ \t]*//;s/[ \t]*$//'
done
king1688888888
2020-09-03 11:12:45 +08:00
@zunxiongchen 感谢分享,我参考着改一下。
zunxiongchen
2020-09-03 11:48:37 +08:00
@king1688888888
你要做出你的效果

#root
密码修改时间:xxx
密码过期时间:xxx

#nginx
密码修改时间:xxx
密码过期时间:xxx

也可以很容易改了。改改 echo 就好了
sjhspp
2020-09-03 11:50:27 +08:00
看到了长大的自己
UnknownR
2020-09-03 12:25:26 +08:00
每次到这个时候就会怀念 powershell 这种 oop 脚本的方便性
hasdream
2020-09-03 12:35:15 +08:00
import spwd
root_shadow = spwd.getspnam("root")
print root_shadow.sp_expire #过期时间
print root_shadow.sp_lstchg #上次修改密码时间
jeson1010
2020-09-03 16:08:50 +08:00
@sjhspp 哈哈

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/703768

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX