检查操作系统当前可登录用户并批量修改密码Shell脚本

检查操作系统当前可登录用户并批量修改密码,通过openssl生成base64的随机密码,且密码复杂度须符合大小写、数字和特殊字符的要求(可调整)。

!!!切记:要保存并记录好新密码!!!

#!/bin/bash
# 检查操作系统当前可登录用户并批量修改密码
# ./changePassword.sh -l 'root weblogic'

# 主机地址
hostIP=`ip a | grep '10.10.' | awk '{print $2}' | awk -F/ '{print $1}'`

# 超级用户
superUser="root"
# 随机密码限制次数(超出限制次数将自动停止生成新密码)
randTimes=100
# 所有可登录的用户
recentUsr=(${superUser} `ls /home`)
# 密码长度
pwdLength=12
# 日志文件
changeLog="${PWD}/changePassword-${hostIP}.log"

[ "`whoami`" != "${superUser}" ] && echo "必须以${superUser}用户执行该脚本" && exit 0

# 重置待修改的用户列表
while getopts 'l:' OPT
do
  case ${OPT} in
    l) userList="$OPTARG";;
  esac
done

# 确认或者重置用户列表
while [ -z "${userList}" ]
do
  echo "主机:${hostIP}"
  echo "用户:${recentUsr[@]}"
  read -p "确定要重置以上用户的密码吗?输入‘Y’继续,输入‘E’退出..." toNEXT
  [ "${toNEXT^^}" = "Y" ] && break
  [ "${toNEXT^^}" = "E" ] && exit 2
done
[ -n "${userList}" ] && recentUsr=(${userList})

# 当前时间函数
getTime (){
  nowTime=`date +'%Y%m%d%H%M%S'`
}

# 随机密码函数
getRandom (){
  rdmString="`openssl rand -base64 ${pwdLength}`"
  rdmString=`echo ${rdmString} | grep -E "[0-9]" | grep -E "[A-Z]" | grep -E "[a-z]" | grep -E "[!@#$%^&*()_+<>?/]"`
}

getTime
echo -e ">>>>>>>>>>>>>>>> ${nowTime:0:8} - ${hostIP} <<<<<<<<<<<<<<<" >> ${changeLog}

for userName in ${recentUsr[@]}
do
  getRandom
  getTime
  flag=1
  while [ -z "${rdmString}" ]
  do
    [ ${flag} -gt ${randTimes} ] && echo -e "${nowTime}\t用户:${userName}生成新密码时超出次数(${randTimes})限制" >> ${changeLog} && break
    getRandom
    flag=`expr ${flag} + 1`
  done
  [ -n "`grep ^${userName} /etc/passwd | grep -v nologin`" ] && echo "${rdmString}" | passwd --stdin ${userName}
  [ $? -eq 0 ] && echo -e "共尝试${flag}次\t密码:${rdmString}\t用户:${userName}" >> ${changeLog} && sleep 0.5 || continue
done

echo -e "\n" >> ${changeLog}

sz ${changeLog}

# 删除日志
while true
do
  read -p "确定要删除本机保存的密码修改日志吗?输入‘Y’继续,输入‘E’退出..." toNEXT
  [ "${toNEXT^^}" = "Y" ] && rm -f ${changeLog} && break
  [ "${toNEXT^^}" = "E" ] && exit 0
done

原创文章禁止转载:技术学堂 » 检查操作系统当前可登录用户并批量修改密码Shell脚本

精彩评论

8+1=

感谢您的支持与鼓励

支付宝扫一扫打赏

微信扫一扫打赏