2010-07-30 103 views
0

在下面的ant build.xml片段中,我正在执行rsync操作。 rsync命令会提示输入密码。为什么我必须在exec脚本中输入数据两次?

问题是,当它提示输入密码时,我输入一次,回车,没有任何反应。所以我再次输入(第二次),然后按回车键,然后它就可以工作。

我很奇怪我必须输入两次,我不明白为什么?

<!-- Define a target which publishes the final build apk to the test server. --> 
<target name="upload" depends="release"> 
     <exec executable="rsync" dir="${basedir}"> 
       <arg value="--stats"/> 
       <arg value="--progress"/> 
       <arg value="-vaz"/> 
       <arg value="bin/myfile.apk"/> 
       <arg value="[email protected]:/path/to/backupfolder"/> 
     </exec> 
</target> 
+0

当你在shell中直接执行相同的命令时,是什么行为? – 2010-07-30 20:08:22

+0

shell中的相同命令提示一次,并在第一次尝试时接受我的输入。 – 2010-07-31 00:11:55

+0

我也可以按回车键进入第一个提示,并在第二个输入密码,并且密码被接受。第一个就像是假的。 – 2010-08-02 14:44:42

回答

0

也许某些已经在shell中设置的环境变量值在ant脚本中不可访问,例如。 RSYNC_RSH,RSYNC_PASSWORD。您可以通过相应选项(如-e或--password-file)设置这些变量/值,或者通过ant的env元素在任务内设置这些变量。

+0

我希望它提示我进行身份验证,因此我没有使用-e或定义的RSYNC_PASSWORD定义预共享​​密钥。做任何一个肯定会避免这个问题,但我喜欢输入上传密码的安全性...... – 2010-08-01 18:37:27

相关问题