公司拥有50多台服务器。每台服务器上使用的密码完全不同,操作系统也不同,有centos5、6、7、ubuntu、windows等,更不用说各种小版本了。定期更改root密码是一件大事(暂时不谈Windows)。对于批量修改,首先想到的就是ansible,但是使用ansible的一个问题是admin机器必须将自己的ssh_key传递给接收服务器才可以正常使用。这绝对是一个麻烦。所以后来我发现了expect命令。此命令在默认服务器上不可用。在阿里巴巴基地源码中找到。您可以使用它直接安装并检查脚本。
服务器列表信息[root@bogon ~]# catmodifyrootpasswd.txt##ip 用户端口oldpwnewpw##—————————————- ———- – —————————————— ———- – ———————–192.168.3.145根22chunlanyyPU4XdnIy3eWz7TM17OKniHoeBUnRMO1q192.168.3.146根22chunlanyy70Zzm993Qnf13MGpBHaBgcvUX7pztwib[root@bogon ~ ]# 对于Excel 表格,请按照上述操作。 format ,写入旧密码,然后使用tr 命令将要更改的新密码直接复制到批量密码生成器中。
[root@bogon ~]# tr -cd \'[:alnum:]\’ /dev/urandom -w 32 | head -2QSnDl7EuEXLUbgNf9jBuVm8P0x6zb3OTwvk4ihCl7G2f0ISySu2COifr1tHtAp6C 有例外:排队el 将信息复制到服务器以形成文本rz。在服务器信息列表中,请务必阅读文本并注意Linux 和各种Linux 分隔符之间的差异。视窗。
[root@bogon ~]# catmodifyrootpasswd.txt ##ipuserportoldpwnewpw192.168.3.145root22chunlanyyPU4XdnIy3eWz7TM17OKniHoeBUnRMO1q192.168.3.146root22chunlanyy70Zzm993Qnf13MGpBHaBgcvUX7pzt wi b [root@bogon ~]# 如果您看到这样的消息,则密码更改将失败。
期望脚本[root@bogon ~]# catpasswordmodify.sh #!/bin/bashFile=/root/modifyrootpasswd.txtfor Ip in `awk \’/^[^#]/{print $1}\’ $File`;doUser=` 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 设置超时30 Expect { \\\'(yes/no)\\\’ {send \\\’yes\\r\\\’;exp_ continue} \\\’password:\\\’ {send \\ \’$Oldpw\\r\\\’;exp_ continue} \\\’$User@*\\\’ {发送\\\’echo \\\’$Newpw\\\’ |passwd –stdin $User\\r exit\\r\\\’;exp_ continue} } \’ done 注1.Expect中的\\r是交互标识2.spawn是Expect执行命令
总结: 相比ansible,expect具有方便简洁的特点,并且不受ssh_key的限制。但缺点是它有很多交互内容要显示(模拟完全手动登录),执行结果的显示并不简单,同时它不知道如何生成服务器密码。不是完全自动化。
本文和图片来自网络,不代表火豚游戏立场,如若侵权请联系我们删除:https://www.huotun.com/game/670419.html