如何逃脱@ Ant中SCP任务(How to escape @ in Ant SCP task)

2019-08-01 16:46发布

我想问您一些帮助。 我如何使用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. 

请,反正是有强制任务正确地解析这个字符串? 非常感谢你。

顺便说一句,我不知道为什么,但我目前的供应商也不可能不附加主机名来创建一个用户名。

Answer 1:

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

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

望着在SCP任务源在功能parseUri(String uri)线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)

该代码似乎并不支持这一意见(如指出的马丁·克莱顿 )。 你也可以看到你是指它的密码或者密钥文件丢失时触发的错误。 也许在密码的组合user:password@host:/path标记,并用@用户名是造成问题?



Answer 2:

目前蚂蚁版本-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


文章来源: How to escape @ in Ant SCP task