批量配置主机--expect

##安装expect

yum -y install expect

###step1: 发送脚本文件到远程服务器;

###step2: 在远程服务器执行脚本;完成后删除脚本文件

#!/bin/bash

IpList=`cat $1`

for ip in $IpList
do
echo -e "\033[32m 'send script to $ip' \033[0m"
/usr/bin/expect <<-EOF
set timeout -1
set passwdlist { username {password1 password2 password3 ...} }
foreach {u p} \$passwdlist {
spawn  scp script.sh \$u@$ip:/opt/
lassign \$p s(1) s(2) s(3)
set i 1
expect {
"*yes/no*"  {send "yes\r";exp_continue}
"*assword:*" {send "\$s(\$i)\r";incr i;set okpasswd [expr {\$i - 1}]; exp_continue}
"*]*" { puts "scp completed"; exit}
"Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password)." {puts "ipaddr:$ip password:unkonw"; exit }
}
}
EOF
done

for ip in $IpList
do
echo -e "\033[32m 'execute script on $ip' \033[0m"
/usr/bin/expect <<-EOF
set timeout -1
set passwdlist { username {password1 password2...} }
foreach {u p} \$passwdlist {
spawn ssh \$u@$ip
lassign \$p s(1) s(2) s(3)
set i 1
expect {
"*yes/no*" {send "yes\r";exp_continue}
"*password:*" {send "\$s(\$i)\r";incr i;set okpasswd [expr {\$i - 1}] ;exp_continue}
"*]*" {send "hostname\r"}
"Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password)." {puts "ipaddr:$ip password:unkonw"; exit }
}
expect "]*"
send { /opt/script.sh } 
send "\r"
expect "]*"
send { rm /opt/script.sh }
send "\r"
expect "]*"
send "exit\r"
}
EOF
done

猜你喜欢

转载自www.cnblogs.com/gy99/p/12175105.html