linux expect

timeout -1 为永不超时

Expect中最关键的四个命令是send,expect,spawn,interact。

send:用于向进程发送字符串
expect:从进程接收字符串
spawn:启动新的进程
interact:允许用户交互



#!/usr/bin/expect  
set timeout 30                      #设置超时时间

spawn ssh -l root 9.100.132.21                

expect "password:"           #判断前一条语句的输出结果是否包含字符串“password:” 

send "ispass/r"             #这里是执行交互操作,与手工输入密码的动作等价

interact                   # 执行完成后保持交互状态,把控制权交给控制台,如果没有执行完后会退出,而不是留在远程终端上。
                            如果登陆过去只是执行一段命令,可改为expect eof
expect的字符处理是没有换行符之类的,所以需要额外加上,\r代表是返回字符,代表输入到此为止,需要返回,其实效果类似按回车,
为什么有些地方用\r,有些地方用\n,其实也无妨,只是为了输出格式好看,而\n其实等于了\r\n了,所以会多一个空行。

参考引用:

1、http://segmentfault.com/a/1190000002564816

2、http://www.xuanhao360.com/linux-expects/

3、http://www.cnblogs.com/iloveyoucc/archive/2012/05/11/2496433.html


posted @ 2015-05-19 17:21  放空自己  阅读(452)  评论(0编辑  收藏  举报