我想每 1 小时更改一个 linux 用户的密码。有没有人有任何想法使用通过 cron 调用的 bash 脚本或通过 linux cronjob 直接命令?
答案1
扩展@SINA GH 的答案,但为了直接回答而将其简化:
如果 mkpasswd 可用:
echo '0 * * * * root mkpasswd -l 50 cloud-user' >> /etc/crontab
如果 mkpasswd 不可用:
echo '0 * * * * root < /dev/urandom tr -dc A-Z-a-z-0-9 | head -c50 | passwd --stdin cloud-user' >> /etc/crontab
这将在 crontab 中放置一行,以每小时自动将单个用户的密码更改为随机生成的字符串。
分解它:
echo '...' >> /etc/crontab
添加新行/条目以按计划运行
0 * * * * root
在每个工作日的每个小时的第 0 分钟以 root 身份运行
< /dev/urandom tr -dc A-Z-a-z-0-9
生成随机数据并过滤字符
| head -c50
从 stdin 中获取前 50 个字符(随机字符)
| passwd --stdin cloud-user
将 cloud-user 的密码设置为从 stdin 传入的密码(前 50 个随机字符)
答案2
每天通过随机字符串更改用户密码。
用法:autopass.sh username
安装:
将以下代码保存在目录autopass.sh
中名为的文件中/root/
。
#!/bin/bash
set -e
MyUser=$1
RandPass=$(< /dev/urandom tr -dc A-Z-a-z-0-9 | head -c12)
set +e
echo -e "$RandPass\n$RandPass\n" | passwd $MyUser &> /dev/null && echo "$(date) --> Passwd: $RandPass" >> /root/${MyUser}-pass.txt || echo "$(date) --> Error: failed to change pass" >> /root/${MyUser}-pass.txt
exit 0
执行权限:chmod u+x autopass.sh
编辑crontab:crontab -e
并将其添加到文件中:0 3 * * * /root/autopass.sh username
每天,脚本通过随机字符串更改密码并将其保存到 /root/username-pass.txt
文件中