linux自动生成在非root用户密码到期前生成密码写到文件中的脚本

linux自动生成在非root用户密码到期前生成密码写到文件中的脚本
脚本名称(自动生成test的密码并设置):
auto_setting_test_passwd.sh

#!/bin/bash
# 当前年月日时分秒 20230421153045
current_date=$(date +"%Y%m%d%H%M%S")
# 随机生成密码 不符合条件的重新生成 直到生成正确的
generate_complex_password() {
 # 生成包含至少1个大写字母、1个小写字母、1个数字和任意数量特殊字符的密码
    while true; do
        PASSWORD=$(head /dev/urandom | tr -dc 'A-Za-z0-9!@#$%^&*()_+=-|{}[]:;' | head -c 12)
        if echo "$PASSWORD" | grep -q '[A-Z]' && echo "$PASSWORD" | grep -q '[a-z]' && echo "$PASSWORD" | grep -q '[0-9]'; then
        break
        fi
        done
    echo "$PASSWORD"
}
# 查找上一次改密码的时间 秒数
last_changed_date=$(($(grep "^test:" /etc/shadow | cut -d: -f3) * 86400))
echo $last_changed_date

# 获取test用户的密码最后一次更改秒数  这个时间戳通常是Unix时间戳格式,是一个整数值,表示从1970年1月1日(UTC时间)以来的秒数
last_change=$(grep "^test:" /etc/shadow | cut -d: -f3)

# 计算当前时间与上次更改密码时间之间的差值(单位:天)
diff_days=$(( ( $(date +%s) - $last_changed_date ) / 86400 ))
echo $diff_days

# 超过90天 重新设置密码
if [ "$diff_days" -ge 90 ]
echo "User $user has not changed their password in over 90 days, forcing a change..."
echo "test:$(generate_complex_password)" | chpasswd

# 写入test目录下的test_password.txt文件中
echo "$current_date user:test change password: $(generate_complex_password)" >>/test/test_password.txt
fi
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

涯一涯二涯三

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值