【发布时间】:2012-11-02 01:47:01
【问题描述】:
我正在运行一个脚本,我想在其中检测 WebSphere MQ 版本,如果这个版本是 7.1,那么我想运行 runmqsc 来设置通道身份验证。我这样做:
<if>
<or>
<os name ="AIX">
<os name ="Linux">
</or>
<then>
<loginfo>Checking the installed MQ version.</loginfo>
<osexec commandbase="su" dir="/bin" mode="osexec">
<args>
<arg value="-"/>
<arg value="- ${mq_admin_name}"/>
<arg value="-c"/>
<arg line="dspmqver | grep Version"/>
</args>
</osexec>
<if>
<not>
<not>
<contains casesensitive="yes" substring="7.1.0.0" string="${result.output}"/>
</not>
</not>
<then>
...........
..........
之后我使用runmqsc。
但问题是字符串{result.output} 是空的。 dspmqver 命令未正确执行..有人可以提出原因吗?
【问题讨论】:
-
问题-Ant 命令是
exec而FTE 不提供osexec那么osexec是您的内部Ant 程序之一吗?如果这是一个普通的 Antexec命令,我希望看到一个outputproperty=result。我不知道osexec是否在内部设置了结果属性,但根据显示的代码,我希望result为空。 -
@T.Rob .. 是的 osexec 是一个内部 Ant 过程。当我使用“dspmq | grep ${queue_manager_name}”命令执行相同的代码时,执行以下操作:
然后我在 result.output 中得到输出。那么,为什么不在这种情况下呢? -
没有看到
osexec的代码或dspmqver的实际输出很难说。您没有提供诊断信息或实际执行失败调用的代码的任何特殊原因?那么<loginfo>Result of dspmqver: ${result.output} ${result.error}</loginfo>呢? -
@T.Rob ..
Result of dspmqver: ${result.output} ${result.error} 仅给出 dspmqver: 的结果。这让我觉得 result.output 是空的。 dspmqver 给出以下输出: 名称:WebSphere MQ 版本:7.1.0.0 级别:p000-L111015 构建类型:IKAP -(生产)平台:WebSphere MQ for AIX 模式:64 位操作系统:AIX 6.1 InstName:Installation1 InstDesc:InstPath: /usr/mqm 数据路径:/var/mqm 主要:是 MaxCmdLevel:710 -
不使用 grep 试试。当
dspmqver失败时,它通常会给出一个错误,但在这种情况下,grep 会抑制任何不符合搜索模式的内容,因此是空字符串。此外,发生这种情况时是否有任何 FDC 文件被剪切?${MQ_INSTALL_PATH}errors/AMQERR01.LOG中有什么内容吗?而不是“如何在 Ant 中检查 MQ 版本”,这篇文章可能会更好地命名为“如何从 Ant 中获取诊断信息”,在这种情况下,这篇评论将是一个获得积分的答案。 ;-)
标签: ant ibm-mq websphere-mq-fte