批量修改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。

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

转载于:https://www.cnblogs.com/marility/p/7299547.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值