一、需求说明
数据中心运维根据等保要求我们需要定期修改操作系统用户密码,一般是要求3个月修改一次。一个一个的修改很浪费时间,我们需要批量修改,此脚本就是批量修改Linux系统的操作系统账户密码,此脚本通过openssl命令生成随机密码并记录到文件中。此脚本要求执行命令的主机配置到待修改用户密码主机配置ssh免密登录。为了安全,建议此主机严格限制登录源,ssh配置限制系统管理员主机地址登录。
二、脚本内容
#!/bin/bash
#script name: changeUserPasswd.sh
#author: 524627027@qq.com
#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