期望的输出不完整

时间:2015-11-05 17:38:34

标签: linux shell expect rsync

我有这个脚本为了与另一台服务器进行rsync,propossal是获取arround 1600文件,这个脚本作为两个变量,日期和小时,所以,我用shell脚本发送这两个值然后我传递值

期待剧本:

#!/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 user@IPSERVER:/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}

你可以注意到,在期望的剧本中,我发表评论" interactive"一句话,因为:

  1. 如果没有评论并手动运行脚本,它运行得很好,它会得到1600个文件。
  2. 如果它被评论,并通过shell脚本运行,那么它只能获得50个文件并且关闭。
  3. 那么,为了使用shell脚本获取所有文件的任何消化?

1 个答案:

答案 0 :(得分:1)

你可能已超时:50个文件可能是你可以传输的(默认)10秒。在产生之前添加:set timeout -1

“。sh”是期望脚本的错误文件扩展名:使用“.exp”

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