如何在ant中检查Websphere MQ版本?

时间:2012-11-01 15:06:24

标签: ant ibm-mq websphere-mq-fte

我正在运行一个脚本,我想在其中检测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命令没有正确执行。有人建议为什么?

1 个答案:

答案 0 :(得分:0)

帖子的标题,“如何检查ant中的Websphere MQ版本?”,dspmqver没有正确执行的结论,以及缺乏诊断,这里有一点不匹配信息。

  • 问题不在于如何检查Ant中的WebSphere MQ版本,而是如何在Ant中执行异常处理和诊断。
  • 不支持dspmqver未正确执行的结论。显示的代码并未表明它甚至可以执行dspmqver
  • 未显示执行实际执行并设置result属性的代码部分。

我的建议如下:

  1. 验证osexec是否填充result.error。我猜想,鉴于result.output的存在,将填充属性。如果osexec没有填充它,请使用STDERR填充的内容,或修改它以使用STDERR执行某些操作(如果尚未执行)。
  2. </osexec>下方,添加<loginfo>Call to dspmqver returned: STDOUT='${result.output}', STDERR='${result.error}'</loginfo>
  3. 如果未返回任何内容,请删除grepdspmqver命令应该将某些内容返回到STDERRSTDOUT,如果grep与搜索字符串不完全匹配,dspmqver会将其过滤掉
  4. 如果仍未返回任何内容,请质疑dspmqver甚至正在执行的假设。如果是,则返回某事或剪切FDC文件。任何其他行为都是{{1}}中的错误,无法通过Ant解决或回复此帖子。
  5. 基本上,分而治之。继续删除东西,直到你得到输出。这将隔离问题。打印有用的诊断信息,这样一旦你发现了问题,就可以了解它是什么。