Chinaunix

标题: expect如何让命令执行成功后再执行下面的动作? [打印本页]

作者: panwei789    时间: 2007-09-16 20:08
标题: expect如何让命令执行成功后再执行下面的动作?
要从测试环境下拷索引到线上服务器上,可是expect不等拷完全部索引就开始执行后面的命令,导致缺失部分索引,请各位提供一个好的解决办法,不用sleep,谢谢。
spawn cp -r /index/   /backup
expect "*$"
.....................
spawn ssh -l user ip
expect "*password:"
send "passwd\r"
expect "Last*"
send "su - root\r"
expect "Password:"
send "password\r"
expect "*$"
send "cp -r /backup/index  /product/index\r"
expect eof
interact
作者: waker    时间: 2007-09-17 08:17
解决你自己不是已经用红色标出来了么?expect一个提示符
作者: panwei789    时间: 2007-09-17 09:35
我都试过,不起作用,cp命令都没有执行完毕,600多M的索引总是拷不全,幸亏没放到线上去,要不然就死翘翘了

[ 本帖最后由 panwei789 于 2007-9-17 09:42 编辑 ]
作者: waker    时间: 2007-09-17 09:42
可能cp的输出中有$字符,使用expect -d,看看究竟发生了什么
或使用autoexpect自动生成一个脚本,和自己的对比一下看看有什么不同
作者: panwei789    时间: 2007-09-18 11:48
恩,一会试试看
作者: zhangstones    时间: 2007-10-06 12:26
尝试sleep 1,如下:
spawn cp -r /index/   /backup
sleep 1

expect "*$"
.....................
spawn ssh -l user ip
expect "*password:"
send "passwd\r"
expect "Last*"
send "su - root\r"
expect "Password:"
send "password\r"
expect "*$"
send "cp -r /backup/index  /product/index\r"
expect eof
interact
作者: huolefo    时间: 2011-09-23 10:45
回复 4# waker


   

我的脚本也是先生成 expect的。这个expect -d,怎么执行的,谢谢
作者: fangtong2008    时间: 2011-09-23 12:07
autoexpect 如何自动生成脚本?
作者: itssolei    时间: 2013-07-15 16:26
expect默认超时时间10s,你拷贝文件需要多长时间?




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2