2

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コマンドが正しく実行されていません..誰かが理由を提案できますか?

4

1 に答える 1

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. 何も返されない場合は、grep. dspmqverコマンドは or に何かを返す必要があり、検索文字列と完全に一致しない場合はフィルターで除外されます。STDERRSTDOUTgrep
  4. それでも何も返されない場合は、実行されている仮定に異議を唱えdspmqverます。そうであれば、何かを返すか、FDC ファイルをカットします。他の動作はバグでdspmqverあり、Ant またはこの投稿への応答では解決できません。

基本的に、分割して征服します。出力が得られるまで、ものを削除し続けます。これにより、問題が特定されます。有用な診断を印刷して、問題を特定したら、それが何であるかを示すことができます。

于 2012-11-01T17:47:01.903 に答える