1、安装
expect命令不是系统自带,需要额外安装。安装方法:
#yum install expect
#which expect
/usr/bin/expect
2、语法
#!/usr/bin/expect #声明解释器注意不是bash
set timeout 2 #设置超时时间,超过2秒没有匹配到expect的值就退出
set username [lindex $argv 0] #定义变量并且赋值为脚本的第一个参数
set password [lindex $argv 1]
set hostname [lindex $argv 2]
spawn /usr/bin/ssh $username@$hostname #spawn 启动一个进程或者执行一条命令,后面的expect和send都是为他服务的
expect {
"yes/no"
{send "yes\r"; exp_continue;}
"Password:"
{send "$password\r";}
}
expect eof
说明:
当spawn创建的是一个连接,而不是执行一个单独的命令时需要使用expect eof结束进程,否则进程可能不会正常结束
当执行一个命令时 ,不可以带expect eof, 使用expect eof会报错,因为没有进程能够断开