技术解析

请教一个查看用户密码过期时间的 shell 脚本
0
1975-02-23 20:03:50
idczone
想通过一个简单的 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
试下这个吧
/>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

感谢分享,我参考着改一下。


你要做出你的效果
/>密码修改时间:xxx
密码过期时间:xxx
/>密码修改时间:xxx
密码过期时间:xxx
也可以很容易改了。改改 echo 就好了

看到了长大的自己

每次到这个时候就会怀念 powershell 这种 oop 脚本的方便性

import spwd
root_shadow = spwd.getspnam("root")
print root_shadow.sp_expire
print root_shadow.sp_lstchg #上次修改密码时间

哈哈

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服