Linux批量修改用户密码4:root口令加密、不同主机、不同用户,改成随机的密码

小咪咪 2022-02-27 08:50 473阅读 0赞

本文中涉及到主机口令加解密处理,相关脚本参考我的另外一篇文章:https://blog.csdn.net/qq_40809549/article/details/85095691

主机列表文件hosts.txt格式:ip;username;root’s password,此处的root口令为加密处理后的密文,运行脚本时需要输入加密处理时所用的密钥。示例:

192.168.2.41;userA;U2FsdGVkX18AADWixNvl2jk3Gw6cF4z9naOfDzKms2o=
192.168.2.42;userA;U2FsdGVkX19Vr2LV8xnA/HKrK8RWqBw6ySdy2woijyY=
192.168.2.43;userA;U2FsdGVkX18HXor4q3klKwvueUDW/bAVxgmLhm21FVU=
192.168.2.43;userB;U2FsdGVkX18HXor4q3klKwvueUDW/bAVxgmLhm21FVU=

#!/bin/bash

remote_dir=”/tmp”
remote_cmd=”/usr/sbin/chpasswd -e < ${remote_dir}/chpass.txt;rm -f ${remote_dir}/chpass.txt”

newpwd.txt

read -p “Please Input the encrypt key:” enc_key

#读取文件中的行
#cat hosts.txt|while read LINE 此处如果用这种写法在ssh时会报错,引起循环中断
for LINE in `cat hosts.txt`
do
##################读取主机文件,root密码为密文
#备份IFS
OLD_IFS=”$IFS”
#设置新的分隔符为;
IFS=”;”

arr=($LINE)
ip=${arr[0]}
usernm=${arr[1]}
enc_rootpw=${arr[2]}
rootpw=`echo ${enc_rootpw}|openssl aes-256-cbc -d -k ${enc_key} -base64`

#恢复IFS
IFS=”$OLD_IFS”
##################获取随机密码
MATRIX=”0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz~!@#$%^&*()_+=”
LENGTH=”9”
while [ “${n:=1}“ -le “$LENGTH” ]
do
PASS=”$PASS${MATRIX:$(($RANDOM%${#MATRIX})):1}“
let n+=1
done
n=1
##################生成密码文件和记录文件
secpw=`echo $PASS|xargs openssl passwd -1`
echo “${usernm}:${secpw}“ >chpass.txt
echo “${ip};${usernm};${PASS}“ >>newpwd.txt
PASS=””
##################修改远程主机密码
sshpass -p $rootpw scp -o StrictHostKeyChecking=no chpass.txt root@$ip:${remote_dir}
sshpass -p $rootpw ssh -o StrictHostKeyChecking=no -t root@$ip “${remote_cmd}“
echo “……….${usernm}@${ip} password updated!”
done

chpass.txt
#>hosts.txt ##此版本要求主机文件包含root口令,使用后应立即清除
echo “======done!!”

发表评论

表情:
评论列表 (有 0 条评论,473人围观)

还没有评论,来说两句吧...

相关阅读