基本命令
- spawn:启动进程,并跟踪后续交互信息
- expect eof:等待执行结束
- interact:执行完成后保持交互状态,把控制权交给控制台
- set:设置超时时间,过期则继续执行后续指令,单位是秒
- timeout -1:表示永不超时,默认情况下,timeout是十秒
- exp_continue:允许expect继续向下执行指令
- send_user:回显命令,相当于echo
expect执行方式
直接执行
set timeout 20
log_file test.log
log_user 1
set hostname [lindex $argv 0]
set password [lindex $argv 1]
spawn ssh root@$hostname
expect {
"yes/no"
{send "yes\r";exp_continue}
"*password"
{send "$password\r"}
}
interact //将控制权交给控制台
嵌入执行
hostname=$1
password=$2
/usr/bin/expect<<-EOF
spawn ssh root @${hostname}
expect {
"(yes/no)"
{send "yes\r";exp_continue}
"*password"
{send "$password"}
}
expect "*]#"
send "exit\r"
expect eof
EOF //结束标记顶格