例:パラメータ化パッケージ
パラメータ化パッケージでは、アクションの展開時のコマンドラインパラメータの値を指定するよう求められます。たとえば、Tanium提供のRegistry - Set Valueパッケージを使用するアクションの展開では、[Action Deployment (アクションの展開)]


アクションが定期的に再展開されるように設定すると、それはスケジュール済みアクションになります。スケジュール済みアクションがパラメータ化パッケージに基づいている場合、代入値をはじめとするパッケージの定義は、一時パッケージと呼ばれるオブジェクトに保存されます。そうしたパッケージを呼び出すスケジュール済みアクションを実行する指令がある場合、エンドポイントのTanium Clientはその一時パッケージを実行します。スケジュール済みアクションは、基のパッケージが更新されても引き続き一時パッケージを使用します。したがって、パッケージが更新され、更新済みコードを予定済みアクションで使用する場合は、予定済みアクションを作成し直す必要があります。
パッケージのスクリプトとコマンドラインパラメータ
パラメータ化パッケージの構成では(「パッケージを作成する」を参照)、コマンドにスクリプトを指定します。スクリプトにコード化されたパラメータと、アクションの展開時に値を指定する順序は、番号ではなく位置に従います。次の例では、スクリプトのパラメータは0〜4の番号が振られています。

コマンドラインパラメータには、$1から$5までの番号が振られています。


'- Begin file: i18n/UTF8Decode.vbs '======================================== ' UTF8Decode '======================================== ' Used to convert the UTF-8 style parameters passed from ' the server to sensors in sensor parameters. ' This function should be used to safely pass non english input to sensors. '----- '----- Function UTF8Decode(str) Dim arraylist(), strLen, i, sT, val, depth, sR Dim arraysize arraysize = 0 strLen = Len(str) for i = 1 to strLen sT = mid(str, i, 1) if sT = "%" then if i + 2 <= strLen then Redim Preserve arraylist(arraysize + 1) arraylist(arraysize) = cbyte("&H" & mid(str, i + 1, 2)) arraysize = arraysize + 1 i = i + 2 end if else Redim Preserve arraylist(arraysize + 1) arraylist(arraysize) = asc(sT) arraysize = arraysize + 1 end if next depth = 0 for i = 0 to arraysize - 1 Dim mybyte mybyte = arraylist(i) if mybyte and &h80 then if (mybyte and &h40) = 0 then if depth = 0 then Err.Raise 5 end if val = val * 2 ^ 6 + (mybyte and &h3f) depth = depth - 1 if depth = 0 then sR = sR & chrw(val) val = 0 end if elseif (mybyte and &h20) = 0 then if depth > 0 then Err.Raise 5 val = mybyte and &h1f depth = 1 elseif (mybyte and &h10) = 0 then if depth > 0 then Err.Raise 5 val = mybyte and &h0f depth = 2 else Err.Raise 5 end if else if depth > 0 then Err.Raise 5 sR = sR & chrw(mybyte) end if next if depth > 0 then Err.Raise 5 UTF8Decode = sR End Function '- End file: i18n/UTF8Decode.vbs
シェルスクリプトでは、次のような関数を使用してパラメータデータをデコードできます。
#!/bin/sh percent_decode() { local data=$(echo "$1" | sed 's/%/\\\x/g') /usr/bin/printf '%b' "$data" } myVariable=`percent_decode "||parameter_value||"`
この場合、printfユーティリティが使用できないか、Linux、MacOS、UNIXのすべてのプラットフォームで正しく機能しないことがあります。洗練されてはいませんが、誰にも簡単に使える実装は次のようになります。
#!/bin/sh brute_force_percent_decode() { # decode everything between 0x20-0x7E except: #0 1 2 3 4 5 6 7 8 9 (0x30-0x39) #A B C D E F G H I J K L M N O P Q R S T U V W X Y Z (0x41-0x5A) #a b c d e f g h i j k l m n o p q r s t u v w x y z (0x61-0x7A) echo "$1" | sed -e 's/%20/ /g' \ -e 's/%21/!/g' \ -e 's/%22/"/g' \ -e 's/%23/#/g' \ -e 's/%24/$/g' \ -e 's/%25/%/g' \ -e 's/%26/\&/g' \ -e "s/%27/'/g" \ -e 's/%28/(/g' \ -e 's/%29/)/g' \ -e 's/%2[aA]/*/g' \ -e 's/%2[bB]/+/g' \ -e 's/%2[cC]/,/g' \ -e 's/%2[dD]/-/g' \ -e 's/%2[eE]/./g' \ -e 's#%2[fF]#/#g' \ -e 's/%3[aA]/:/g' \ -e 's/%3[bB]/;/g' \ -e 's /%3[cC]/</ g '\\ -e 's/%3[dD]/=/g' \ -e 's /%3[eE]/>/ g '\\ -e 's/%3[fF]/?/g' \ -e 's/%40/@/g' \ -e 's/%5[bB]/[/g' \ -e 's/%5[cC]/\\/g' \ -e 's/%5[dD]/]/g' \ -e 's/%5[eE]/^/g' \ -e 's/%5[fF]/_/g' \ -e 's/%60/`/g' \ -e 's/%7[bB]/{/g' \ -e 's/%7[cC]/|/g' \ -e 's/%7[dD]/}/g' \ -e 's/%7[eE]/-/g' } myVariable=`brute_force_percent_decode "||parameter_value||"`
パラメータ入力の設定
パッケージを使用するアクションを展開した時にTanium Consoleがユーザに入力を求める設定は、パッケージ構成に指定されているパラメータ入力によって決まります。パラメータは1つずつ追加します。最初に追加するパラメータはコマンドライン変数$1、2つ目は変数$2に一致するというように構成します。


フォームの左側にあるナビゲーションメニューに表示されるパラメータ入力リストで、項目を選択してドラッグし、並べ替えることができます。必ず、最終的な順序がコマンド内の番号付きのパラメータと揃うようにします。
ユーザ入力の最も一般的なウィジェットはテキストボックスですが、次のオプションのどれでも選択できます。
- Checkbox (チェックボックス):ユーザはボックスをチェックして設定を有効化します。0または1が変数として入力されます。選択された場合は1、選択されなかった場合は0が返されます。
- Date (日付)、Date Time (日付時刻)、Date Time Range (日付時間範囲):ユーザは日付と時間、または範囲を選択します。日時は、ミリ秒単位のエポック形式です。範囲では、ユーザはパイプで区切って2つの日時を指定します。
- Drop Down List (ドロップダウンリスト):ユーザはリストから1つのオプションのみを選択します。
- List (リスト):ユーザは1つ以上の値を選択します。複数の値はパイプで区切ります。
- Numeric (数値): ユーザは数字を入力します。入力は最小値と最大値で制御できます。ステップサイズを指定すると、指定した値で入力を割り切れるように指定できます。スナップ間隔は、上下ボタンが押されたときの数字の増減量です。ステップサイズの値は、スナップ間隔が0でなければ、スナップ間隔の値の倍数にする必要があります。ユーザが選択した数字が変数に入力されます。
- Numeric Interval (数値間隔):ユーザはリストから数値と項目を選択します。リスト項目は数値を1つとります。 変数に入力される値は、乗算の結果です。たとえば、ユーザが2を選択してHigh(高)(値は3)を選択すると、変数の値は6になります。
- Separator (セパレータ):セパレータは、ユーザ入力フォーム内のセクションを区切るグラフィカルな方法です。
- Text Area (テキスト領域):ユーザは大量のテキストを入力します。テキストは変数に入力されます。
- Text Input (テキスト入力):ユーザはテキスト入力を入力します。許可されるエントリは、正規表現で制御できます。ユーザ入力は変数に入力されます。
- Time (時刻): ユーザは、ドロップダウンリストから時刻を選択します。入力は制限することができます。
最終更新: 2021/09/03 10:41| フィードバック