批量修改root密码

公司有五十多台服务器。每台服务器中使用的密码完全不同,同时操作系统也不一样,centos5,6,7 、ubuntu,windows都有,更不用提其中各种小版本。

root密码定期更改是一个大问题(windows暂时不提)。

对于批量更改,首先想到的ansible,但是使用ansible有一个问题就是需要一台管理机,管理机需要通过将自己的ssh_key传给被受体服务器才可以正常使用

对于添加ssh_key,固然很麻烦。所以后面找到了expect这个命令

expect命令默认服务器中没有,可以在阿里的base源中找到,直接使用yum install -y expect进行安装

直接看脚本

服务器列表信息
[root@bogon ~]# cat modifyrootpasswd.txt
##ip		           user    port    oldpw		newpw
##------------------------------------------------------------------------------------------------------
192.168.3.145    root    22	chunlanyy	PU4XdnIy3eWz7TM17OKniHoeBUnRMO1q
192.168.3.146    root    22	chunlanyy	70Zzm993Qnf13MGpBHaBgcvUX7pztwib
[root@bogon ~]# 

在excel表中,按上述格式,把旧密码写入,然后再批量直接将要修改的新密码复制进入

密码批量生成使用tr命令

[root@bogon ~]# tr -cd '[:alnum:]' < /dev/urandom | fold -w 32 | head -2
QSnDl7EuEXLUbgNf9jBuVm8P0x6zb3OT
wvk4ihCl7G2f0ISySu2COifr1tHtAp6C

其中head可以显示多少行,然后直接copy至excel中,自动对齐

后将整个excel表的信息copy至sublime中,形成文本rz至服务器中即可

要注意的是,在服务器信息列表中,一定要cat一下文本的内容,注意linux和windows中不同分隔符的区别。

[root@bogon ~]# cat modifyrootpasswd.txt 
##ip	user	port	oldpw	newpw
192.168.3.145	root	22	chunlanyy	PU4XdnIy3eWz7TM17OKniHoeBUnRMO1q
192.168.3.146	root	22	chunlanyy	70Zzm993Qnf13MGpBHaBgcvUX7pztwib[root@bogon ~]# 

如果出现的像是这种,会导致密码修改失败。

expect脚本
[root@bogon ~]# cat passwordmodify.sh 
#!/bin/bash
File=/root/modifyrootpasswd.txt

for Ip in `awk '/^[^#]/{print $1}' $File`;do
	User=`awk -v Var=$Ip '{if(Var==$1)print $2}' $File`
	Port=`awk -v Var=$Ip '{if(Var==$1)print $3}' $File`
	Oldpw=`awk -v Var=$Ip '{if(Var==$1)print $4}' $File`
	Newpw=`awk -v Var=$Ip '{if(Var==$1)print $5}' $File`
expect -c "
    spawn ssh -p $Port $User@$Ip
    set timeout 30
    expect {
        \"(yes/no)\" {send \"yes\r\";exp_continue}
        \"password:\" {send \"$Oldpw\r\";exp_continue}
        \"$User@*\" {send \"echo \'$Newpw\' |passwd --stdin $User\r exit\r\";exp_continue}
    }"
done

要注意的是

1.expect中的\r是出现交互的标示符

2.spawn是expect中的执行命令

小结:

相比于ansible,expect具有方便简洁的作用,不受制于ssh_key。

但是缺点也很明显,执行结果显示并不直接,因为有一大堆交互内容显示(完全模拟手动登陆),无法知晓更改结果,同时在服务器密码的生成也不够自动化。

posted @ 2017-08-07 15:55  marility  阅读(615)  评论(0)    收藏  举报