脚本内容如下:
[root@node5 ~]# cat sshlogin2.exp
#!/bin/bash
set ip [lrange $argv 0 0] #第一个变量赋值ip
set password [lrange $argv 1 1] #第二个变量赋值给password
set port 22
spawn ssh root@$ip -p$port
expect {
"*yes/no*" { send "yes\n";exp_continue }
"*password:" { send "$password\n" }
}
expect "*#"
send "cd /home\n" #登录完成后,进入到/home目录
interact #执行完成后,不退出,留着交互界面
登录演示:
[root@node5 ~]# expect -f sshlogin2.exp 192.168.0.129 1 #执行的命令带2个参数,第一个为IP ,第二个为password
spawn ssh root@192.168.0.129 -p22
root@192.168.0.129's password:
Last login: Sat Oct 16 21:43:48 2021 from 192.168.0.109
[root@node2 ~]# cd /home
[root@node2 home]# #停留在目标主机交互界面