<execNative> ステップは、ターゲットホストでオペレーティングシステムに対してネイティブコマンドを実行します。 コマンドが予期しなかった結果を生成する場合、ステップは失敗し、実行が停止します。
<execNative< ステップには次の子要素があります。
<env> – オプション要素で、子プロセスの環境変数を指定します。各環境変数に対しては、1 つの <env> 要素を指定します。
<background> – オプション要素で、コマンドをバックグラウンドプロセスとして実行することを指定します。この要素を指定する場合、この要素は 1 回しか出現できません。<background> 要素を指定する場合は、<outputFile> 要素と <errorFile> 要素も指定する必要があります。
<outputFile> – オプション要素で、コマンドの標準出力を格納するファイルの名前。この要素を指定する場合、この要素は 1 回しか出現できません。この要素は、<background> 要素が指定してある場合は必須要素になります。
<errorFile> – オプション要素で、コマンドの標準エラー出力を格納するファイルの名前。この要素を指定する場合、この要素は 1 回しか出現できません。この要素は、<background> 要素が指定してある場合は必須要素になります。
<inputText> – オプション要素で、コマンドの標準入力として使用するテキスト。この要素を指定する場合、この要素は 1 回しか出現できません。<inputFile> 要素が指定されていると、この要素は指定できません。
<inputFile> – オプション要素で、コマンドの標準入力として使用するファイル名。この要素を指定する場合、この要素は 1 回しか出現できません。<inputText> 要素が指定されていると、この要素は指定できません。
<exec> – 必須要素で、実行する実行可能ファイル名を指定します。<shell> 要素が指定されていると、この要素は指定できません。
<shell> – 必須要素で、実行するシェルコマンドを指定します。この要素は 1 回しか出現できません。<exec> 要素が指定されていると、この要素は指定できません。
<successCriteria> – オプション要素で、このステップが成功したか失敗したかを判断するために使用される基準。この要素を指定する場合、この要素は 1 回しか出現できません。
<execNative> ステップには次の属性があります。
userToRunAs – オプション属性で、このコマンドを実行するためのユーザーの名前。この属性を指定しないと、コマンドは構成ファイル内の defaultUserToRunAs の値として実行されます。値として、文字列によるユーザー名または数値によるユーザー ID を指定できます。この値は、空でない文字列にする必要があります。この属性は、単純置換変数を参照できます。
dir – オプション属性で、コマンドの作業ディレクトリの絶対パス。この属性を指定しないと、値のデフォルトはエージェント固有の構成可能ディレクトリになります。この値は、空でない文字列にする必要があります。この属性は、単純置換変数を参照できます。
timeout – positiveInteger 型のオプション属性で、コマンドの完了を待機する時間を秒数で指定します。この時間を経過するとタイムアウトとなります。この属性を指定しないと、プランの <execNative> タイムアウト期間が適用されます。この値は 0 より大きくする必要があります。
<execNative> 要素は、コマンドの環境変数を指定する目的で、必要に応じて <env> 要素を含むことができます。<env> を使用すると、コマンド環境の新しい変数を提供することも、既存の変数を無効にすることもできます。
コマンドの環境変数セットは、Remote Agent の環境変数セットと、<env> 要素を使用して提供される変数を合わせたものです。
<env> 要素には次の属性があります。これらの属性は、単純置換変数を参照できます。
value – 必須属性で、環境変数の値。この値には、Remote Agent の環境変数の値を参照するように、 ${var-name } 文字列を含めることができます。<env> 要素により無効にされた変数を var-name が参照する場合、その置換された値は Remote Agent の環境内で定義されたものであり、無効にされた値ではありません。値に ${ という文字列を表示させる必要がある場合は、 ${{ を使用してこの文字列をエスケープします。${{ のインスタンスはすべて ${ に置換されます。
<background> 要素は <execNative> 要素の子です。この要素が存在する場合、コマンドをバックグラウンドプロセスとして実行する必要があることを示します。この要素には属性も子要素もありません。
<background> 要素が指定された <execNative> の場合、以下の制限が適用されます。
<successCriteria> は指定の必要はありません。ステップは、バックグラウンドプロセスを開始する上で何も問題が存在しなかった場合には成功します。指定すると、コマンドをバックグラウンドプロセスとして実行するために使用されるスクリプトに照らして <successCriteria> のテストが行われます。
実行されるコマンドの標準出力または標準エラー出力はキャプチャされません。
ブラウザインタフェースの「details」を参照すると、終了ステータス 0 と、空の標準出力、および標準エラー出力が表示されます。しかし、バックグラウンドでネイティブコマンドを開始する際に問題があった場合は、別の終了ステータスが表示されます。その値はエラーの特性と診断出力に応じて決まります。
<outputFile> および <errorFile> 要素を指定する必要があります。指定したファイルがすでに存在する場合、それらは上書きされます。
<outputFile> 要素は <execNative> 要素の子です。<outputFile> 要素は、実行されるコマンドの標準出力が格納される、エージェント上のローカルファイルのパスを指定します。ローカルファイルのパスは、<outputFile> 要素の name 属性を使用して指定します。相対パスは、コマンドの作業ディレクトリに相対的であると解釈されます。
<background> 要素を指定する場合は、<outputFile> 要素を指定する必要があります。
<outputFile> を指定せず、<successCriteria> 要素で outputMatches も指定しないと、コマンドの出力は格納されずに消失します。outputMatches を指定すると、標準出力は一時ファイルに格納され、コマンドの実行後そのファイルが削除されます。
<outputFile> 要素には 1 つの必須属性 name があり、これはコマンドの標準出力の書き込み先となるファイル名です。この値は、空でない文字列にする必要があります。この属性は、単純置換変数を参照できます。
<errorFile> 要素は、実行されるコマンドのエラー出力を格納する、エージェント上のローカルファイルのパスを指定します。ローカルファイルのパスは、<errorFile> 要素の name 属性を使用して指定します。相対パスは、コマンドの作業ディレクトリに相対的であると解釈されます。
<background> 要素を指定する場合は、<errorFile> 要素を指定する必要があります。
<errorFile> を指定せず、<successCriteria> 要素で errorMatches も指定しないと、コマンドの出力は格納されずに消失します。errorMatches を指定すると、エラー出力は一時ファイルに格納され、コマンドの実行後そのファイルが削除されます。
<errorFile> 要素には 1 つの必須属性 name があり、これはコマンドの標準エラー出力の書き込み先となるファイル名です。この値は、空でない文字列にする必要があります。この属性は、単純置換変数を参照できます。
<inputText> 要素は <execNative> 要素の子です。この子要素は、コマンドの標準入力として使用する必要がある任意のテキストを指定します。このテキストは、この要素のコンテンツとして指定されます。
<execNative> <inputText> ls -l | fgrep `*test*' | sort -u > file.out </inputText> <command exec=”sh”/> </execNative> |
<inputText> 要素の本体は、CDATA セクションで囲むことができます。これにより、入力フォーマットを保持するとともに、文字 & や < を含む入力で発生しうる解析エラーを防ぐことができます。
<inputText> を指定すると、<execNative> ステップの XML を生成する際に常に CDATA セクション内に包含されます。<inputText> 内の文字はすべて、実行されるコマンドに標準入力として渡されます。<inputText> に空白文字だけを含めると、それらの空白文字は指定されているとおりに、実行されるコマンドに渡されます。
<inputText> のコンテンツは config 生成されます。
<inputText> 要素に属性はありません。
<inputFile> 要素は <execNative> の子要素です。この子要素は、実行されるコマンドの標準入力として使用されるコンテンツが入った、Remote Agent 上のローカルファイルのパスを指定します。ローカルファイルのパスは、<inputFile> 要素の name 属性を使用して指定します。
<inputFile> 要素は、<execNative> コマンド内で <inputText> 要素と併用することはできません。
<inputFile> 要素には 1 つの必須属性 name があり、これはコマンドに対する標準入力として動作するファイルです。この値は、空でない文字列にする必要があります。相対パスを指定した場合、コマンドの作業ディレクトリに対して相対的であると解釈されます。この属性は、単純置換変数を参照できます。
<execNative> ステップには <exec> 要素を 1 つしか含めることができません。<exec> 要素は、実行されるネイティブコマンドの詳細を指定します。
<exec> 要素には次の属性が含まれます。
実行するコマンドの名前を指定する cmd 属性
cmd コマンドの各引数用の、入れ子になった一連の <arg> 要素
<execNative> は、cmd により指定されたコマンドを、指定された引数を順に使用して実行します。
次に、<execNative> ステップが ps -fu sps コマンド実行する例を示します。
<execNative> <exec cmd=”ps”> <arg value=”-fu”/> <arg value=”sps”/> </exec> </execNative> |
<exec> 要素にはオプションの子要素 <arg> があります。実行するコマンドに対する各引数に 1 つの <arg> 要素を指定します。
<arg> 要素には 1 つの必須属性 value があり、この属性は引数値です。この引数は、<arg> がコマンド要素の n 番目の子であるコマンドに n 番目の引数として渡されます。この属性は、単純置換変数を参照できます。
<exec> 属性には 1 つの必須属性 cmd があり、この属性は実行するコマンドのパスです。指定したパスが絶対パスでない場合、Remote Agent に対して設定された、プラットフォーム指定の PATH 環境変数を使用してコマンドの検索が行われます。この値は、空でない文字列にする必要があります。この属性は、単純置換変数を参照できます。
<shell> 要素は <execNative> の子要素です。<shell> 要素のコンテンツは、実行されるコマンドを指定します。実行されるコマンドは、cmd 属性で指定されるインタプリタによって解釈されます。したがって、そのコマンドはプラットフォームの sh -c “command” 構文を使用して実行されます。この書式では、コマンドの実行に使用するシェルコマンドを示すために cmd 属性を指定する必要があります。
次に例を示します。
<execNative> <shell cmd=”/usr/bin/bash -c”> ls -l | fgrep `*test*' | sort -u > file.out </shell> </execNative> |
前に示した <execNative> の例では、次のコマンドを実行していました。
/usr/bin/bash -c `ls -l | fgrep `*test*' | sort -u > file.out' |
書式を保持するとともに XML の解析問題を回避するため、<execNative> ステップから XML 表現を生成する際には常に CDATA 要素内にコマンドのテキストコンテンツが包含されます。
コマンド文字列を空の状態にしたり、空白文字だけを入れたりすることは認められません。コマンド文字列は、(周囲の空白も含め) 指定されているとおりにシェルに送られます。
<shell> 要素のコンテンツは config 生成されます。
<shell> には 1 つの必須属性 cmd があり、この属性は sh -c 構文内のシェルコマンドです。この文字列に、埋め込みの引用符文字を含めないでください。この文字列は、空白を区切りとして使用して、シェル名と引数を取得するために解析されます。たとえば、/usr/bin/bash -c は空でない文字列にします。この属性は、単純置換変数を参照できます。
<successCriteria> 要素は <execNative> の子要素です。この子要素は、 <execNative> ステップが正常に実行されたかを評価するために使用される基準を指定します。 この要素が指定されない場合のデフォルト値は <successCriteria status=”0”/> です。
空の <successCriteria> を指定すると、<successCriteria> は無視されます。
<successCriteria/> を指定した場合、コマンドがどのような出力または終了コードを生成した場合でも、ステップは常に成功します。
<successCriteria> 要素には次のオプション属性があります。status、outputMatches、および errorMatches 属性の中から複数の属性が指定されると、それらの AND (論理積) がとられます。
outputMatches – オプション属性で、コマンドによって生成された標準出力を照合する正規表現。この値は、空でない文字列にする必要があります。この属性は、単純置換変数を参照できます。
errorMatches – オプション属性で、コマンドによって生成された標準エラー出力を照合する正規表現。この値は、空でない文字列にする必要があります。この属性は、単純置換変数を参照できます。
inverse – ブール型のオプション属性で、true に設定すると、<successCriteria> で指定された各条件が無視されます。デフォルト値は、false です。つまり、<successCriteria> の各属性で指定された条件が満たされない場合だけステップは成功します。
たとえば、次の <successCriteria> を持つ <execNative> ステップが成功するのは、status が 1 ではなく、標準出力が bin に一致せず、標準エラーが none に一致しない場合です。
<successCriteria status=”1” outputMatches=”bin” errorMatches=”none” inverse=”true”/> |
inverse 属性だけを含む <successCriteria> 要素は、inverse 属性なしで保存されます。つまり、次のように指定すると、要素は <successCriteria/> として格納され、<successCriteria> 要素は無視されます。
<successCriteria inverse=”true”/> |