如今,随着大小公司云计算平台建设,运维人员压力也日趋增大,其中一项就是服务器账号密码安全。笔者在管理集团的云计算平台中,遇到了150台设备要在短时间内修改密码的需求。在度娘上搜索了各方面资料后,自己写了一个脚本,在此分享给大家,希望对运维人员、后学等有一些帮助。
1、mod_password.sh
#!/bin/bash
oldpassword=$1
newpassword=$2
for i in `cat servip.txt`
do
echo "ssh to $i via root user."
ip=$i
/usr/bin/expect <<flagEOF
set time 30
spawn ssh root@$ip
expect {
"*yes/no*" {send "yes\r"; exp_continue}
"*password:*" {send "${oldpassword}\r"}
}
expect "*#"
send "export LANG=en\r"
expect "*#"
send "passwd"
expect "*password:"
send "${newpassword}\r"
expect "*password:"
send "${newpassword}\r"
expect "*#"
send "exit\r\r"
interact
expect flagEOF
flagEOF
echo "modified root's password of $i."
done
执行命令
./mod_password.sh oldpassword newpassword
说明:
1、该脚本执行需要满足两个前提:一是批量修改的服务器root密码均一样;二是执行命令的linux服务器安装了expect命令。
2、执行命令时,需要传入两个参数,第一个是原密码;第二个是修改后的新密码。
3、servip.txt与mod_password.sh 脚本在同一路径下,且文档中,每行只能有一个服务器ip地址。