AIX服务器全账号密码最后更新时长查询方法咨询
在AIX服务器生成账号密码最后更新时长列表
AIX系统中没有/etc/shadow文件时,可通过pwdadm工具结合shell脚本批量计算所有账号的密码最后更新时长,具体操作如下:
核心原理
pwdadm -q <用户名>输出的lastupdate字段是UNIX时间戳(即从1970-01-01 00:00:00 UTC到密码更新时间的总秒数),通过计算当前时间戳与该值的差值,再转换为天数即可得到目标结果。
批量生成列表的脚本
创建如下shell脚本(适用于ksh/bash环境):
#!/bin/ksh # 遍历所有本地用户 for user in $(lsuser | awk '{print $1}'); do # 获取用户的密码更新时间戳,忽略无密码用户的错误信息 last_update=$(pwdadm -q "$user" 2>/dev/null | grep 'lastupdate' | awk -F= '{print $2}') # 仅处理有有效时间戳的用户 if [ -n "$last_update" ]; then current_ts=$(date +%s) # 计算天数差(每天86400秒) days=$(( (current_ts - last_update) / 86400 )) echo "$user - $days days" fi done
脚本调整说明
- 如果只想统计普通用户(通常UID≥1000),将遍历用户的命令替换为:
for user in $(lsuser -a id | awk '$2 >= 1000 {print $1}'); do - 执行脚本前需确保有足够权限(建议用root用户执行)
手动单用户查询方法
若只需查询单个用户,可直接执行以下命令:
# 获取时间戳 last_update=$(pwdadm -q user01 | grep lastupdate | awk -F= '{print $2}') # 计算并输出天数 current_ts=$(date +%s) days=$(( (current_ts - last_update) / 86400 )) echo "user01 - $days days"
内容的提问来源于stack exchange,提问作者Matt Tin
相关产品推荐
相关产品推荐

