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