expect实现交互式脚本

#!/usr/bin/expect -f  ##告诉解释器用expect来解释

set timeout 6     ##设置超时时间

set user [lindex $argv 0 ]  ## 这个是传递给脚本的第一个参数,并把参数赋值给user
set ip [lindex $argv 1]     ## 这个是传递给脚本的第二个参数,依次类推
set passwd [lindex $argv 2]

spawn ssh $user@$ip         ##spawn的意思是执行这个命令
expect {                    ##expect是指期待获得什么值,如果多行,请用'{'
   "yes" {
           send "yes
"     ##如果是得到的字符串中有yes的话,就send也就是传入个'yes
'
           expect "assword" ##同理如果包含 'assword’
           send "$passwd
" ##就发送变量passwd的内容并换行
         }
   "assword" {send "$passwd
"} ##这个好理解了吧
}

expect "]"                  ##单行的写法就很简单了

send "ls /home
"             
send "exit"

interact                    ##interact是指停留在交互的界面,如果没有它,执行完命令会回到原来的shell中                 
原文地址:https://www.cnblogs.com/cmsd/p/3277388.html