Expect解释器协助Shell脚本实现SSH登陆自动应答,需要安装expect解释器来解释该脚本。只写了密码登陆方式自动应答,该脚本不支持密钥登陆自动应答
#!/usr/bin/expect -f
#参数0:远程用户名
#参数1:远程主机IP地址
#参数2:远程主机SSH端口
#参数3:远程主机用户密码
set passworderror 0
set user [lindex $argv 0]
set host [lindex $argv 1]
set port [lindex $argv 2]
set pass [lindex $argv 3]
set timeout 20
spawn ssh -p $port $user@$host
expect {
"*yes/no)?*" {
send "yes\r"
exp_continue
}
"*Permission denied, please try again*" {
puts "连接状态: 权限被拒绝"
exit
}
"*assword*" {
if { $passworderror == 1 } {
puts "连接状态: 连接状态:密码错误"
exit
}
set timeout 1000
set passwderror 1
send "$pass\r"
exp_continue
}
"*Connection refused*" {
puts "连接状态: 连接被拒绝,请检查端口是否正确,端口: $port"
exit
}
timeout {
puts "连接状态: 连接超时"
exit
}
"#" {
interact
}
}