在groovy脚本中从ant - sshexec获得良好的输出

时间:2011-08-19 12:35:16

标签: ant groovy ssh

我的问题是,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的原始输出执行...

一些想法?!

3 个答案:

答案 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'

希望这可以帮助处于相同情况的人们。干杯