TA的每日心情 | 怒 前天 13:01 |
---|
签到天数: 1643 天 [LV.Master]伴坛终老
|
昨天朋友问我有没有办法用shell自动修改密码,不用手动去修改密码,当时没有敢马上答应,在虚拟机上测试了下,发现是可以实现的,并且我在他的要求上再增加了每个月定时修改密码,并发邮件通知.这里先申明下,如果要在生产环境上使用,先在本地虚拟环境上测试好再放上去,要不就再多增加个root管理权限的用户,不然到时候系统自己修改了密码,但邮件又没有收到,那就只能干看到.
系统:centos 5.9
需要的软件包:msmtp-1.4.16.tar.bz2
1.搭建发邮件环境
要搭建个可以发邮件的环境,大家可以去看我这篇linux下安装mutt文章.
2.创建脚本
vi root-passwd.sh- #!/bin/bash
- datetime=`date +%Y-%m-%d" "%H":"%M`
- email="admin@cnblackhat.com"
- passwd="cat /dev/urandom | head -1 | md5sum | head -c 12>/root/passwd.txt"
- passwd root --stdin < /root/passwd.txt
- cat /root/passwd.txt|mutt -s "$datetime new passwd" $email
复制代码 说明:
在linux中有一个设备/dev/urandom是用来产生随机数序列的,利用该设备我们可以根据在需要生成随机字符串,只要修改最后面的 head -c 12 就可以产生你想要的随机密码了,最多可以生成32位,用做密码足够了.
3.设置定时更新密码
crontab -e
0 23 28 * * /bin/sh /root/soft_shell/root-passwd.sh
保存后,重启crond.
ps:
* * * * * command
分 时 日 月 周 命令
这个定时是说每个月28号的晚上11点执行脚本.为什么不设置29号?是怕2月份啊.
好了,这里最后再申明下,先测试好了再用到生产环境上,不然后果就只能自己负责了.
|
|