expect 非交换式命令
测试实例: 非交换式登陆某一台服务器, 通常第一次登陆一台服务器的时候, 需要按一下 yes, 然后再输入密码, 我们目的是通过 expect 模拟输入
[root@localhost ~]# ssh 10.3.151.31
The authenticity of host '10.3.151.31 (10.3.151.31)' can't be established.
RSA key fingerprint is 08:1e:93:79:5c:0f:6c:de:68:d5:e8:57:8c:44:a5:57.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '10.3.151.31' (RSA) to the list of known hosts.
- root@10.3.151.31's password:
- Last login: Wed Jun 6 18:32:57 2018 from 10.4.50.229
1, 安装 expect
yum -y install expect
2, 编写 test.exp 文件
- #!/usr/bin/expect
- set host [lindex $argv 0]
- set password "kang"
- spawn ssh "kang@$host"
- expect {
- "yes/no" {send "yes\r";exp_continue}
- "*password" {send "$password\r"}
- }
- expect eof
3, 运行 test.exp 文件
- [root@localhost ~]# expect test.exp 10.3.151.31
- spawn ssh kang@10.3.151.31
- kang@10.3.151.31's password:
- [kang@localhost ~]$
来源: http://www.bubuko.com/infodetail-2634005.html