Macでのリモートアクション用スクリプトの作成
このページでは、Mac上でNexthinkのリモートアクションスクリプトを準備するプロセスの詳細を説明します。 スクリプトは、Unix系の多くのオペレーティングシステムでサポートされているコマンドラインシェルおよびスクリプティング言語であるBashで書かれた後、セキュリティーのために証明書で署名されます。 Bashスクリプトは、タスクの自動化や構成管理に適しており、リモートアクションを従業員のデバイスで実行することができます。
macOSデバイスでMobile Accountsが有効になっている場合、リモートアクションは現在サポートされていません。 このモードでは、アクションが成功したように見えることがありますが、実際には変更が適用されません。
リモートアクションの主な使用ケースは、デバイスからのオンデマンドデータ収集、自己修復タスク、および設定の変更を含みます。
この記事は、読者がBashスクリプティングに精通していることを前提としています。
詳細については、Remote Actionsグループのコミュニティのドキュメントを参照してください。
スクリプトの作成
一般的なスクリプトと入力変数
デジタル署名されたスクリプトのカスタマイズが必要な場合に、汎用スクリプトは便利です。 署名済みスクリプトを変更するとその署名は無効になりますが、汎用スクリプトはパラメーターでカスタマイズでき、署名を保持します。
スクリプトの冒頭でパラメータを宣言し、Bashの位置パラメータとして次のように2つの特別なコメントの間に挿入します:
# NXT_PARAMETERS_BEGIN
Parameter1=$1
Parameter2=$2
Parameter3=$3
# NXT_PARAMETERS_ENDリモートアクションの構成中にスクリプトをアップロードするとき、システムはBashスクリプト内の特別なNexthinkコメントの間にあるパラメーターを取得します。 それらをスクリプトテキストの下にあるパラメーターセクションに一覧表示します。 各パラメータ名の右側に表示されたテキスト入力ボックスに、実際の値を提供してください。
アウトプット変数の作成
スクリプトを実行すると、オンデマンドデータとして保存したいアウトプットが生成されることがあります。 Nexthinkは、Collectorと同時に従業員デバイスにインストールされるBashスクリプト(nxt_ra_script_output.sh)を提供しています。 このスクリプトには、結果をデータレイヤーに書き込むための関数が含まれています。
リモートアクションのアウトプットにNexthinkスクリプトの関数を使用するには、Bashスクリプトの最初に以下のヘッダーを追加してください。
#!/bin/bash
. "${NEXTHINK}"/bash/nxt_ra_script_output.shすべての書き込み方法は、アウトプット名と書き込む値の2つの引数を受け入れます。 例えば、ディレクトリ内のファイル数をデータレイヤーに返したい場合、スクリプト内の変数nfilesにその数が含まれます。 nfilesの値をFileNumberというアウトプット名でデータレイヤーに書き込むには、符号なし整数の書き込み関数を呼び出してください。
nxt_write_output_uint32 'FileNumber' $nfilesリモートアクションエディタは、スクリプト内のアウトプットの書き込み呼び出しを認識し、アウトプット変数をアウトプットセクションに一覧表示します。 アウトプットのラベルを設定して、調査やメトリクスでどのように参照するかを示してください。
各writeメソッドの終了はアウトプットの種類を示します。 Bashは、緩やかに型付けされた言語であるため、アウトプットの種類は文脈によって解釈されます。 利用可能なメソッドの一覧は次のとおりです。
nxt_write_output_string
0 - 1024文字(アウトプットが大きい場合は切り詰められます)
nxt_write_output_bool
true / false
nxt_write_output_uint32
最小値: 0
最大値: 4 294 967 295
nxt_write_output_float
最小値: -3.4E+38
最大値: 3.4E+38
nxt_write_output_size
最小値: 0
最大値: 3.4E+38
nxt_write_output_ratio
nxt_write_output_bitrate
nxt_write_output_duration
最小値: 0ミリ秒
最大値: 49日
ミリ秒単位の精度
nxt_write_output_date_time
YYYY年MM月DD日 HH時MM分SS秒
nxt_write_output_string_list
0 - 1024文字(アウトプットが大きい場合は切り詰められます)
出力フィールドの定義
スクリプトを開発する際は次のことを必ず行ってください:
すべての出力フィールドの名前を事前に定義する: これにより、スクリプトが実行中に出力テーブルの正しいフィールドにデータを入力することが保証されます。 事前にフィールド名が定義されていない場合、未知の出力スキーマによりスクリプトが失敗する可能性があります。
出力フィールドの名前は常に
string形式であるべきです。例:
nxt_write_output_string 'output_field_name' "$output_value"
出力フィールドの数を定義する: スクリプトは常に固定数の出力フィールドを指定する必要があります。 固定スキーマにより、予測可能な結果と互換性が保証されます。
動的フィールドを避ける。 動的な出力構造は、プラットフォームでの一貫性の欠如や処理エラーの原因となります。
スクリプトを実行するとき、出力フィールドを定義するためにループを使用しないでください。
キャンペーンの実装
従業員が独自に問題を解決できるよう、リモートアクションとキャンペーンを組み合わせましょう。 キャンペーンを使用して、従業員に問題の検出を通知し、その解決に向けて誘導します。
デバイスとやり取りしている従業員のデスクトップにキャンペーンを表示するには:
キャンペーンはリモートアクショントリガーを持ち、公開されなければなりません。
リモートアクションのスクリプトは以下のいずれかで実行できます。
特別な権限を必要としないアクションの場合、従業員のコンテクストで。
管理者特権を必要とするアクションの場合、ローカルシステムアカウントのコンテクストで。
キャンペーン識別子の取得
リモートアクションからキャンペーンを実行するメソッドでは、引数としてキャンペーン識別子を渡す必要があります。 キャンペーンNQL ID(推奨)とキャンペーンUID(クラシックオプション)の両方を使用できます。
NQL IDを識別子としてサポートするには、Collectorバージョン23.5以上が必要です。リモートアクションにキャンペーン識別子を渡すには、必要なキャンペーンごとにリモートアクションのスクリプトでパラメータを宣言します。 リモートアクションを編集するときに、実際の値としてNQL ID(またはUID)を使用します。
キャンペーンのNQL IDまたはUIDを取得する方法に関する詳細情報は、キャンペーンを起動するドキュメントを参照してください。
リモートアクションのスクリプトからキャンペーンを実行する
次の関数はリモートアクションのスクリプト機能を拡張します。
nxt_run_campaign( id )この関数は、引数として渡されたNQL ID(推奨)またはUIDに一致するキャンペーンを実行し、解答を内部に保存します。
キャンペーンのステータスを受信した場合、関数は0を返します。
その他のケースでは関数は1を返し、エラーはログに記録されます。
この関数を呼び出すと、従業員がキャンペーンを完了するか、却下するまでリモートアクションの実行が一時停止されます。
nxt_run_campaign_with_timeout( id timeout)この関数は、引数として渡されたNQL ID(推奨)またはUIDとタイムアウト(秒単位: 0 < T < 1 週間)に一致するキャンペーンを実行し、解答を内部に保存します。
キャンペーンのステータスを受信した場合、関数は0を返します。
その他のケースでは関数は1を返し、エラーはログに記録されます。
この関数を呼び出すと、従業員がキャンペーンを完了するか却下するか、タイムアウト前にキャンペーンを完了できなかった場合までリモートアクションの実行が一時停止されます。
nxt_run_standalone_campaign( id )この関数は、引数として渡されたNQL ID(推奨)またはUIDに一致するキャンペーンを実行し、解答を内部に保存します。
キャンペーンのステータスを受信した場合、関数は0を返します。
その他のケースでは関数は1を返し、エラーはログに記録されます。
この関数を実行すると、キャンペーンの開始がトリガーされ、従業員の回答を待たずにリモートアクションの実行が続行されます。
nxt_get_campaign_status( res_var )関数:
res_varにキャンペーンのステータスが無事に保存された場合は0を返します。その場合は1を返します。
その後、キャンペーンのステータスを文字列として抽出し、指定された変数 res_var に保存します。 関数が0を返した場合、res_var には以下のいずれかの値が含まれています:
完全: 従業員がキャンペーンの質問に完全に回答しました。
タイムアウト: ユーザーが回答を終える前にキャンペーンがタイムアウトしました。
延期: 従業員がキャンペーンへの参加に同意しました。
拒否: 従業員がキャンペーンへの参加を拒否しました。
接続失敗: スクリプトがキャンペーン通知を制御するCollectorコンポーネントに接続できませんでした。
通知失敗: スクリプトがキャンペーンを正常に表示できなかった理由は次のいずれかです。
存在しないキャンペーン、または未公開のキャンペーンのため、プラットフォームからキャンペーン定義を取得できませんでした。
別のキャンペーンが既に従業員に表示されています。
Collectorの集中保護または「邪魔しないで」ルールのために急を要しないキャンペーンを表示できません。 詳細については、キャンペーンの受信率を制限する方法のドキュメントを参照してください。
最後のキャンペーンが失敗した場合は空白になります。
nxt_get_response_answer( res_var question_key)質問ラベルを文字列パラメータのクエリ_keyとして使用して、最後のキャンペーンに問い合わせます。 関数は回答を文字列として抽出し、指定された変数 res_var に保存します。
res_varにキャンペーンの回答が正常に保存された場合は0を返します。それ以外の場合は1を返します。
スクリプトのエンコード
リモートアクション用Bashスクリプトを書くには:
スクリプトを含むファイルをBOMなしのUTF-8でエンコードします。
コードの各行は、UNIXシステムの通常の文字
LFで終了します。
エンコードを正しく行い、エラーや機能しないスクリプトを避けてください。
コード例
スクリプトの署名
スクリプトの保守
比較と検証
リモートアクションスクリプトを展開する前に、Nexthinkが準備した他のスクリプトと比較することができます。 このステップはオプションですが、初めてスクリプトを準備する場合は推奨されます。
Nexthink Libraryで、コンテンツを選択してください。
リモートアクションでフィルタリングします。
リモートアクション管理ページに移動してください。
Nexthink Library から直接インストールされたリモートアクションスクリプトの中で、ターゲットオペレーティングシステムに一致するものを選択してください。
スクリプトをエクスポートし、その構文を自分のスクリプトと比較してください。
スクリプトの終了とタイムアウト
リモートアクションスクリプトからサブプロセスを開始し、リモートアクションスクリプトが終了またはタイムアウトすると、Collectorはサブプロセスを自動的に終了します。 リモートアクションが終了した後もサブプロセスを実行し続けるには、&文字を使用してスクリプトがサブプロセスをデタッチすることを確認してください。例:
some_script.sh -arg1 -arg2 &Zshコマンドインタープリタ
Collectorバージョン6.27.2以降では、Zsh Unixシェル用に書かれたスクリプトを実行できます。 シェルスクリプトの一番最初に以下の行を追加する必要があります:
#!/bin/zshこれはシバンと呼ばれる文字列です(シバンとは(外部リンク))。
システムがMac上でリモートアクションを実行すると、Collectorはコードの最初の行をチェックし、指定されたインタープリタを使用して残りの指示を実行します。 シバンのないスクリプトは、Bashコマンドインタープリタを使って実行されます。
Last updated
Was this helpful?






















