Shell脚本之批量修改linux主机系统用户密码

一、需求说明

  数据中心运维根据等保要求我们需要定期修改操作系统用户密码,一般是要求3个月修改一次。一个一个的修改很浪费时间,我们需要批量修改,此脚本就是批量修改Linux系统的操作系统账户密码,此脚本通过openssl命令生成随机密码并记录到文件中。此脚本要求执行命令的主机配置到待修改用户密码主机配置ssh免密登录。为了安全,建议此主机严格限制登录源,ssh配置限制系统管理员主机地址登录。

二、脚本内容

#!/bin/bash
#script name: changeUserPasswd.sh
#author: [email protected]
#version: v1
#description: This is used for batch change linux system user passwd

#参数定义
#待修改主机机用户清单
userFile="userfile.txt"
#修改后的密码文件
passFile=passfile.`date +%F`.txt
#修改结果记录日志文件
logFile=logfile.`date +%F`.txt

curdir=`cd -P $(dirname $0); pwd`
cd $curdir

#密码修改函数
function changepasswd(){
  while read line
  do
    host=`echo $line |awk '{print $1}'`
    user=`echo $line |awk '{print $2}'`
    pass=`openssl rand -base64 10 |cut -c 1-12`
    echo $host $user $pass >> $passFile
    ssh $host -n "echo "$pass" |passwd --stdin $user" 2>>$logFile
    if [ $? -eq 0 ];then
      echo "$host 主机 $user 用户修改成功" >>$logFile 
    else
      echo "$host 主机 $user 用户修改失败" >>$logFile
    fi
  done <"$userFile"
}

if [ -s $userFile ];then 
  changepasswd
else
  echo "待修改密码用户清单不存在,请先核查!"
fi

三、使用示例

1、未创建待修改主机及用户名清单文件时

在这里插入图片描述

2、正常执行

在这里插入图片描述

3、修改失败记录失败原因

在这里插入图片描述
在这里插入图片描述

4、验证修改后的密码

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/carefree2005/article/details/122563390