从期望输出不完整
我有这个脚本为了使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脚本,我的评论 “互动” 二字,是因为:
- 如果不是评论并手动运行脚本,它运行得非常好,它会得到1600个文件。
- 如果它是注释,并通过shell脚本运行,它只能得到50个文件,并且关闭。
那么,为了获得使用shell脚本的所有文件的任何sugestion?
您可能会超时:50个文件可能是您可以在10秒内传输(默认)的内容。您产卵前补充一点:set timeout -1
“.SH”是一个错误的文件扩展名的expect脚本:使用“.EXP”
的lrange
命令返回一个列表。使用lassign $argv DIR_DATE DT_HOUR
感谢格伦,我做出了你所取得的改变,但是,当我使用“设置超时-1”时,从不开始。只有消息密码,那么只有提示符闪烁。 – user3658319
文件正在传输吗?你可能没有看到任何东西,因为你不会“期待”任何事情。如果你想看世界过去,最好的方法就是使用'交互式'。 –
问题是为什么在没有交互的情况下脚本早退了?这可能是期待超时。尝试设置无限(或至少更长)的超时时间。 –