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的字符处理是没有换行符之类的,所以需要额外加上,
代表是返回字符,代表输入到此为止,需要返回,其实效果类似按回车,
为什么有些地方用 ,有些地方用 ,其实也无妨,只是为了输出格式好看,而 其实等于了 了,所以会多一个空行。

参考引用:

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


原文地址:https://www.cnblogs.com/relaxgirl/p/4515072.html