自动登录远程机器,执行相关命令。
expect_exec.sh
#!/usr/bin/expect -f
log_file expect_exec.log
set timeout 5
set ip [lindex $argv 0]
set user [lindex $argv 1]
set password [lindex $argv 2]
set cmd_str [lindex $argv 3]
spawn ssh $user@$ip
expect {
"(yes/no)" { send "yes\r"; exp_continue}
"Permission denied" { send_user "error:${expect_out(buffer)}\n"; exit 1}
"assword:" { send "${password}\r"; exp_continue}
"${user}" {send "${cmd_str} \r";send "exit \r";exp_continue }
timeout { send_user "timeout $user@$ip\n"; exit 1 }
"logout" { exit}
}
exit 0
使用示例:
#!/bin/sh
IP_INFO=(
#ip|username|passwd
"192.168.80.128|cq|cq"
"192.168.80.128|cq|cq"
)
CMD_STR="touch aa.txt; echo 'haha' >>aa.txt;"
for ip_info in ${IP_INFO[@]};
do
echo $ip_info
ip=$( echo $ip_info | awk -F "|" '{print $1}')
user=$( echo $ip_info | awk -F "|" '{print $2}')
password=$( echo $ip_info | awk -F "|" '{print $3}')
./expect_exec.sh $ip $user $password "$CMD_STR"
done