我的问题是,ant任务的输出alwas在开头有一些[ssh-exec]信息文本。我可以抑制/禁用它吗?
到目前为止我的代码:
def ant = new AntBuilder()
// .... variable definition ...
ant.sshexec(host: host,
port: port,
trust: true,
username: username,
password: password,
command: 'ls')
>>> output:
[sshexec] Connecting to foomachine.local:22
[sshexec] cmd : ls
[sshexec] oldarchive.gz
[sshexec] newarchive.gz
[sshexec] empty-db.sh
[sshexec] testfile.py
我只想让cmd的原始输出执行...
一些想法?!
答案 0 :(得分:10)
您可以将原始输出保存在Ant属性中:
def ant = new AntBuilder()
ant.sshexec(host: host,
port: port,
trust: true,
username: username,
password: password,
command: 'ls',
outputproperty: 'result')
def result = ant.project.properties.'result'
答案 1 :(得分:0)
问题是outputproperty无法正常工作(它没有设置ant变量)。
我经常使用antcontrib中的trycatch测试是否发生错误而不是读取返回值。
示例:
<trycatch>
<try>
<sshexec host="@{host}" failonerror="true" username="${username}" password="${password}" timeout="${ssh.timeout}" command="@{command}" usepty="@{usepty}" trust="true" />
</try>
<catch>
<echo>Service already stopped!</echo>
</catch>
</trycatch>
答案 2 :(得分:0)
我在gradle中绊倒了同样的问题,从那里我不得不改变访问该属性的方式: 根据{{3}}
println ant.antProp
println ant.properties.antProp
println ant.properties['antProp']
是正确的方法。
def ant = new AntBuilder()
ant.sshexec(host: host,
port: port,
trust: true,
username: username,
password: password,
command: 'ls',
outputproperty: 'result')
def result = ant.properties.'result'
希望这可以帮助处于相同情况的人们。干杯