【问题标题】:How to check Websphere MQ version in ant?如何在 ant 中检查 Websphere MQ 版本?
【发布时间】: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 程序之一吗?如果这是一个普通的 Ant exec 命令,我希望看到一个 outputproperty=result。我不知道osexec 是否在内部设置了结果属性,但根据显示的代码,我希望result 为空。
  • @T.Rob .. 是的 osexec 是一个内部 Ant 过程。当我使用“dspmq | grep ${queue_manager_name}”命令执行相同的代码时,执行以下操作: 然后我在 result.output 中得到输出。那么,为什么不在这种情况下呢?
  • 没有看到osexec 的代码或dspmqver 的实际输出很难说。您没有提供诊断信息或实际执行失败调用的代码的任何特殊原因?那么&lt;loginfo&gt;Result of dspmqver: ${result.output} ${result.error}&lt;/loginfo&gt;呢?
  • @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


【解决方案1】:

这里的帖子标题“如何在 ant 中检查 Websphere MQ 版本?”、dspmqver 未正确执行的结论以及缺少诊断信息之间存在一些不匹配。

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

我的建议如下:

  1. 验证osexec 填充result.error。我只是猜测,鉴于result.output 的存在,该属性将被填充。如果osexec 没有填充它,请使用它使用STDERR 填充的内容,或者修改它以使用STDERR 执行某些操作(如果尚未填充)。
  2. 正下方&lt;/osexec&gt;,添加&lt;loginfo&gt;Call to dspmqver returned: STDOUT='${result.output}', STDERR='${result.error}'&lt;/loginfo&gt;
  3. 如果没有返回任何内容,请删除grepdspmqver 命令应该将 something 返回到 STDERRSTDOUT,如果它与搜索字符串不完全匹配,grep 会将其过滤掉。
  4. 如果仍然没有返回任何内容,请挑战dspmqver 甚至正在执行的假设。如果是,则返回 something 或剪切 FDC 文件。任何其他行为都将是 dspmqver 中的错误,并且无法通过 Ant 解决或回复此帖子。

基本上,分而治之。继续删除东西,直到你得到输出。这将隔离问题。打印有用的诊断信息,这样一旦您找出问题所在,您就可以知道它是什么。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-22
    • 1970-01-01
    • 2010-09-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多