#!/usr/bin/expect -f
set timeout 15          #设置交互式操作的最大超时 s
set host 192.168.1.50   #设置变量 host
set name hoho           #设置变量 name
set password gogogle    #设置变量 password
spawn ssh  $name@$host  # #spawn一个ssh进程
expect {
        "(yes/no)?" {            #检出输出是否有"(yes/no)"的字符
                send "yes\r"     #交互式发送 "yes" , 命令字符串结尾别忘记加上“\r”,如果出现异常等待的状态可以核查一下。
                expect "password:" {send "$password\r"}  #交互式发送密码
        }
        "password:" {send "$password\r"}  #不是第一次登录,交互式发送密码
}
expect "$name"   #判断输出是否成功,因为登录成功后会有 [hoho@主机名]$的输出可以匹配
send "who\n"    #匹配成功后交互式发送命令
expect "hoho"   #上一个命令输出是否有hoho关键字
send_user "now you can do something in this terminal\n"  #向终端输出提示
interact         # 这里使用了 interact 命令,执行完程序后,用户可以在 $host 终端进行交互操作。


这里的用法全部都可以通过 man expect 里找到。

这个脚本是参照http://hi.baidu.com/bikong0411/item/423b89f1d56eb9c2a935a25f

还有命令参数传那些,再慢慢学习。