oadb01:/root/sbin/look# cat pass.exp
#!/usr/bin/expect
# 设置超时时间为 60 秒
# set timeout 60
# 设置要登录的主机 IP 地址
# set host=$host
# 设置以什么名字的用户登录
# set ip=$ip
# 设置用户名的登录密码
# set passwd $passwd
#把shell的参数传递给expect脚本
set user [lindex $argv 0]
set ip [lindex $argv 1]
set passwd [lindex $argv 2]
spawn ssh $user@$ip
# 等待响应,第一次登录往往会提示是否永久保存 RSA 到本机的 know hosts 列表中;等到回答后,在提示输出密码;之后就直接提示输入密码
expect {
"(yes/no)?" {
send "yes
"
expect "password:"
send "$passwd
"
}
"password:" {
send "$passwd
"
}
}
expect "#"
send "/sbin/ifconfig | grep inet | grep -v 127.0.0.1
"
send "exit
"
expect eof
oadb01:/root/sbin/look# cat expect.sh
while read line
do
user=`echo $line | awk '{print $1}'`
ip=`echo $line |awk '{print $2}'`
passwd=`echo $line | awk '{print $3}'`
#把shell中的$user $ip $passwd参数传递给expect脚本
expect pass.exp $user $ip $passwd
done < name.tmp