从期望输出不完整

问题描述:

我有这个脚本为了使rsync与另一台服务器,这个propossal是为了获得1600个文件,这个脚本作为两个变量,日期和小时,所以,我发送这两个值与shell脚本然后我传递值。从期望输出不完整

Expect脚本:

#!/usr/bin/expect 

set DIR_DATE [lrange $argv 0 0] 
# Define date variable. 

set DT_HOUR [lrange $argv 1 1] 
# Define hour variable. 

spawn rsync -avzb -e ssh [email protected]:/SOURCE_DIR/$DIR_DATE/A$DIR_DATE.$DT_HOUR*.txt /TARGET_DIR/$DIR_DATE/ 
expect "password:" 
send "PASSWORD\r" 
#interact 
expect eof 

,而shell脚本是:

#!/bin/bash 

***HERE is the code to get date and hour variable: DT_DATE,DT_HOUR; then, next step is run the expect script*** 

${DIR_BIN}/rsync_expect.sh ${DT_DATE} ${DT_HOUR} 

你可以注意到,在expect脚本,我的评论 “互动” 二字,是因为:

  1. 如果不是评论并手动运行脚本,它运行得非常好,它会得到1600个文件。
  2. 如果它是注释,并通过shell脚本运行,它只能得到50个文件,并且关闭。

那么,为了获得使用shell脚本的所有文件的任何sugestion?

+0

问题是为什么在没有交互的情况下脚本早退了?这可能是期待超时。尝试设置无限(或至少更长)的超时时间。 –

您可能会超时:50个文件可能是您可以在10秒内传输(默认)的内容。您产卵前补充一点:set timeout -1

“.SH”是一个错误的文件扩展名的expect脚本:使用“.EXP”

lrange命令返回一个列表。使用lassign $argv DIR_DATE DT_HOUR

+0

感谢格伦,我做出了你所取得的改变,但是,当我使用“设置超时-1”时,从不开始。只有消息密码,那么只有提示符闪烁。 – user3658319

+0

文件正在传输吗?你可能没有看到任何东西,因为你不会“期待”任何事情。如果你想看世界过去,最好的方法就是使用'交互式'。 –