维护过Zimbra邮件系统的同学都知道,Zimbra不管是后台WebAdmin还是zmprov命令都不能实现批量重置所有用户的密码,最近上线的Zimbra有这个需要,刚巧就在国外某技术网站就找到了解决这个问题的办法,下面就记录一下。
原理:
使用脚本获取所有用户信息字段,并批量针对每一个用户执行zmprov命令重置其密码,以此达到重置所有用户密码的需求。
方法:
1、创建一个批量修改密码的脚本文件changepassword.sh
,脚本内容如下:
#!/bin/bash clear USERS=`su - zimbra -c 'zmprov -l gaa example.com'`; for ACCOUNT in $USERS; do ACC1=`echo $ACCOUNT | awk -F@ '{print $1}'`; ACC=`echo $ACC1 | cut -d '.' -f1`; if [ $ACC == "admin" ] || [ $ACC == "wiki" ] || [ $ACC == "galsync" ] || [ $ACC == "ham" ] || [ $ACC == "tuserzimbra" ] || [ $ACC == "spam" ]; then echo "Skipping system account, $NAME..."; else echo "Modifying $ACCOUNT password..."; su - zimbra -c "zmprov sp $ACCOUNT new_password"; su - zimbra -c "zmprov ma $ACCOUNT zimbraPasswordMustChange TRUE"; echo 'Done!' echo '' # read anykey fi done echo 'Modifying password for all user has been finished successfully'
脚本说明:
1).把example.com
替换为要重置密码的邮箱域名;
2).把new_password
替换为重置后的新初始密码;
3).脚本会自动跳过的系统账号(admin,wiki,galsync,ham,tuserzimbra,spam),只重置普通用户的密码;如还想跳过其他用户,可以按脚本示例在后面自行添加
4).zimbraPasswordMustChange TRUE
重置密码后,用户首次登录强制修改密码;如不想用户首次登录修改密码,可以把值改为FALSE
。
2、替换好域名和初始密码后,执行脚本即可开始批量重置密码
给脚本添加可执行权限
[root@local /]# chmod +x /opt/changepassword.sh
执行脚本
[root@local /]# sh /opt/changepassword.sh
执行脚本后输出结果(如用户数较多,需要耐心等待一会):
Skipping system account, ... Modifying 1@ceshi.com password... Done! Modifying 2@ceshi.com password... Done! Modifying password for all user has been finished successfully
原文链接:Zimbra批量重置所有用户密码,转载请注明来源!