如何在Ant SCP任务中逃脱@

时间:2012-10-19 17:36:57

标签: ant escaping sftp username scp

我想请你帮忙。当我的用户名包含@符号时,如何使用scp任务?

我试图在很多方面逃避角色,但它不起作用。在以下示例中,我的用户名是user@host.com

<scp file="test.txt" todir="&quot;user@host.com&quot;:password@ftp.host.com:/" trust="true" sftp="true"/>
<scp file="test.txt" todir="'user@host.com':password@ftp.host.com:/" trust="true" sftp="true"/>
<scp file="test.txt" todir="user\@host.com:password@ftp.host.com:/" trust="true" sftp="true"/>

但输出总是一样的:

neither password nor keyfile for user "user has been given.  Can't authenticate. 

请问,是否有强制任务正确解析此字符串?非常感谢你。

顺便说一句,我不知道为什么,但是对于我当前的提供商,如果不附加主机名就无法创建用户名。

2 个答案:

答案 0 :(得分:2)

我在build.xml中使用SCP任务,其形式如下:

<scp file="package/ROOT.war" todir="user@example.com:~" trust="true" password="${password}"/>

查看函数parseUri(String uri)的{​​{3}}(第370行),看来该任务可以支持带@符号的用户名。限制似乎与路径中包含:或@,如此注释所示:

// user:password@host:/path notation
// everything upto the last @ before the last : is considered
// password. (so if the path contains an @ and a : it will not work)

代码似乎不支持此评论(正如指出的那样) source of the SCP Task)。您还可以看到在密码或密钥文件丢失时触发的错误。也许user:password@host:/path表示法中的密码和带@的用户名组合会导致问题?

答案 1 :(得分:-1)

当前ant版本-1.9.4操作系统:-16.04 Ubuntu无法正常工作。

更改为1.9.3并指向/usr/bin/ant ssh成功 观察:

16.04 and ant 1.9.3 is working
14.04 ant 1.9.4 is working