【发布时间】:2015-11-05 17:38:33
【问题描述】:
我有这个脚本是为了与另一台服务器进行rsync,建议是获取大约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}
你可以注意到,在期望脚本中,我注释了“交互式”这个词,因为:
- 如果不注释,手动运行脚本,运行非常好,得到1600个文件。
- 如果它被注释,并通过 shell 脚本运行,它只会得到 arround 50 个文件,然后就关闭了。
那么,有什么建议可以使用 shell 脚本获取所有文件吗?
【问题讨论】:
-
问题是为什么在没有交互的情况下脚本会提前退出?这可能是预期的超时。尝试设置无限(或至少更长)超时。