[comment]: # translation:outdated

[comment]: # ({542796d3-542796d3})
# 8 スクリプト

[comment]: # ({/542796d3-542796d3})

[comment]: # ({ba2ff9cc-58923c7d})
#### 概要

*管理 → スクリプト*セクションでは、ユーザー定義のグローバルスクリプトを設定および保守できます。

構成されたスコープとユーザー権限に応じて、グローバルスクリプトを実行できます。

-   さまざまなフロントエンドの場所にある[ホストメニュー](/manual/web_interface/frontend_sections/monitoring/dashboard#host_menu)から(*ダッシュボード*, *障害*, *最新データ*, *マップ*, 他)
-   [イベントメニュー](/manual/web_interface/frontend_sections/monitoring/problems#event_menu)から
-   アクション操作として

スクリプトはZabbixエージェント、Zabbixプロキシ、またはZabbixサーバーでのみ実行されます。 [コマンド実行](/manual/appendix/command_execution)も参照してください。

ZabbixエージェントとZabbixプロキシリモートスクリプトの両方がデフォルトで無効になっています。それらは次の方法で有効にできます。

-   Zabbixエージェントで実行されるリモートコマンドの場合
    - エージェント構成で許可されたコマンドごとにAllowKey=system.run[<コマンド>,\*]パラメーターを追加します。\*は待機モードと非待機モードを表します。
-   Zabbixプロキシで実行されるリモートコマンドの場合
    - **警告：Zabbixプロキシによって監視されているZabbixエージェントでリモートコマンドを実行する場合は、Zabbixプロキシでリモートコマンドを有効にする必要はありません。**ただし、Zabbixプロキシでリモートコマンドを実行する必要がある場合は、プロキシ設定の*EnableRemoteCommands*パラメーターを`1`に設定します。 

既存のスクリプトとその詳細のリストが表示されます。

![](../../../../../assets/en/manual/web_interface/scripts.png){width="600"}

表示データ

|列|説明|
|------|-----------|
|*Name*|スクリプトの名前。スクリプト名をクリックすると、スクリプト[設定フォーム](scripts#configuring_a_global_script)が開きます|
|*Scope*|スクリプトの範囲。アクション操作、手動ホストアクション、または手動イベントアクション。この設定により、スクリプトを使用できる場所が決まります。|
|*Used in actions*|スクリプトが使用されているアクションが表示されます。|
|*Type*|スクリプトタイプが表示されます - *Webhook*、* Script *、* SSH *、* Telnet *、または*IPMI*コマンド。|
|*Execute on*|スクリプトがZabbixエージェント、Zabbixプロキシ、またはZabbixサーバーの何処で実行されるかが表示されます。|
|*Commands*|スクリプト内で実行されるすべてのコマンドが表示されます。|
|*User group*|スクリプトを使用できるユーザーグループが表示されます（すべてのユーザーグループの場合は*すべて*）|
|*Host group*|スクリプトを使用できるホストグループが表示されます（すべてのホストグループの場合は*すべて*）|
|*Host access*|ホストグループのアクセス許可レベルが表示されます - *読み取り*または*書き込み*。必要な権限レベルを持つユーザーのみが、スクリプトの実行にアクセスできます。|

新しいスクリプトを構成するには、右上隅にある*スクリプトの作成*ボタンをクリックします。

[comment]: # ({/ba2ff9cc-58923c7d})

[comment]: # ({44c45ea0-44c45ea0})
##### 一括編集オプション

リストの下にあるボタンは、1つの一括編集オプションを提供します。

-   *削除* - スクリプトを削除します

このオプションを使用するには、それぞれのスクリプトの前にあるチェックボックスをオンにして、*削除*をクリックします。

[comment]: # ({/44c45ea0-44c45ea0})

[comment]: # ({1c5dd978-1c5dd978})
##### フィルタの使用

フィルタを使用して、関心のあるスクリプトのみを表示できます。検索パフォーマンスを向上させるために、データは未解決のマクロで検索されます。

*Filter*リンクは、スクリプトのリストの上にあります。それをクリックすると、名前とスコープでスクリプトをフィルタリングできるフィルターが使用可能になります。

![](../../../../../assets/en/manual/web_interface/script_filter.png){width="600"}

[comment]: # ({/1c5dd978-1c5dd978})

[comment]: # ({201a0633-201a0633})
#### グローバルスクリプトの設定

![](../../../../../assets/en/manual/web_interface/script.png)

スクリプト属性

|パラメータ|<|<|<|詳細|
|---------|-|-|-|-----------|
|*名前*|<|<|<|一意なスクリプト名<br>例：`Clear /tmp filesystem`|
|*範囲*|<|<|<|スクリプトの範囲 - アクション処理、手動ホスト処理、または手動イベント処理。この設定は、スクリプトを使用できる場所を決定します - アクション操作のリモートコマンドで、[ホストメニュー](/manual/web_interface/frontend_sections/monitoring/dashboard#host_menu)または[イベントメニュー](/manual/web_interface/frontend_sections/monitoring/problems#event_menu)<br>範囲を'アクション処理'に設定すると、*構成*→*アクション*にアクセスできるすべてのユーザーがスクリプトを使用できるようになります。<br>スクリプトが実際にアクションの場合、その範囲を「アクション処理」から変更することはできません。<br>**マクロのサポート**<br>範囲は、使用可能なマクロの範囲に影響します。たとえば、ユーザー関連のマクロ（{USER.\*}）はスクリプトでサポートされており、スクリプトを起動したユーザーに関する情報を渡すことができます。ただし、スクリプトスコープがアクション処理の場合は、アクション処理が自動的に実行されるため、サポートされていません。<br>サポートされているマクロを確認するには、「トリガーベースの通知とコマンド/トリガーベースのコマンド」を検索してください。 [サポートされているマクロ](/manual/appendix/macros/supported_by_location)テーブルの「手動ホスト処理スクリプト」および「手動イベント処理スクリプト」。マクロがスペースを含む値（ホスト名など）に解決される可能性がある場合は必要に応じて引用符で囲むことを忘れないでください。|
|*メニューパス*|<|<|<|スクリプトへの目的のメニューパス。たとえば`Default`または`Default /`は、それぞれのディレクトリにスクリプトを表示します。メニューはネストできます。たとえば`メインメニュー/サブメニュー1/サブメニュー2`。監視セクションのホスト/イベントメニューからスクリプトにアクセスすると、指定されたディレクトリに従ってスクリプトが整理されます。<br>このフィールドは、[手動ホスト処理]または[手動イベント処理]が*範囲*として選択されている場合にのみ表示されます。|
|*タイプ*|<|<|<|ボタンをクリックして、スクリプトタイプを選択します：<br>**Webhook**,**Script**,**SSH**,**Telnet**または** [IPMI](/manual/config/notifications/action/operation/remote_command#ipmi_remote_commands)**コマンド|
|<|スクリプトタイプ: Webhook|<|<|<|
|^|*パラメータ*|<|<|Webhook変数を属性と値のペアとして指定します。<br>関連項目：[Webhook](/manual/config/notifications/media/webhook) メディア設定<br>マクロとカスタム[ユーザーマクロ](/manual/config/macros/user_macros)はパラメーター値でサポートされています。マクロのサポートはスクリプトの範囲によって異なります（上記の*範囲*を参照）|
|^|*スクリプト*|<|<|パラメータフィールド（またはその横にある表示/編集ボタン）をクリックすると表示されるブロックにJavaScriptコードを入力します。<br>マクロのサポートはスクリプトの範囲によって異なります（上記の*範囲*を参照）<br >関連項目：[Webhook](/manual/config/notifications/media/webhook) メディア設定 ,[追加のJavascriptオブジェクト](/manual/config/items/preprocessing/javascript/javascript_objects)|
|^|*タイムアウト*|<|<|JavaScript実行タイムアウト（1〜60秒、デフォルトは30秒）<br>タイムサフィックスがサポートされています。例： 30s, 1m|
|<|スクリプトタイプ:スクリプト|<|<|<|
|^|*次で実行*|<|<|それぞれのボタンをクリックしてシェルスクリプトを実行します。<br> ** Zabbixエージェント** - スクリプトはホスト上のZabbixエージェントによって実行されます（system.runアイテムが[許可](/manual/config/items/restrict_checks)されている場合）<br>** Zabbixサーバー（プロキシ）** - スクリプトはZabbixサーバーまたはプロキシによって実行されます（[EnableRemoteCommands](/manual/appendix/config/zabbix_proxy)によって有効になっている場合）- ホストはサーバーまたはプロキシによって監視されます<br>**Zabbixサーバー** - スクリプトはZabbixサーバーによってのみ実行されます。|
|^|*コマンド*|<|<|スクリプト内で実行するコマンドへのフルパスを入力します。<br>マクロのサポートはスクリプトの範囲によって異なります（上記の*範囲*を参照）。カスタム[ユーザーマクロ](/manual/config/macros/user_macros)がサポートされています。|
|<|スクリプトタイプ: SSH|<|<|<|
|^|*認証方法*|<|<|認証方法を選択します - パスワードまたは公開鍵|
|^|*ユーザー名*|<|<|ユーザー名を入力します|
|^|*パスワード*|<|<|パスワードを入力します<br>このフィールドは、認証方法として'パスワード'が選択されている場合に使用できます。|
|^|*公開鍵ファイル*|<|<|公開鍵ファイルへのパスを入力します。<br>このフィールドは、認証方法として'公開鍵'が選択されている場合に使用できます。|
|^|*秘密鍵ファイル*|<|<|秘密鍵ファイルへのパスを入力します。<br>このフィールドは、認証方法として'公開鍵'が選択されている場合に使用できます。|
|^|*キーのパスフレーズ*|<|<|パスフレーズを入力します。<br>このフィールドは認証方法として'公開鍵'が選択されている場合に使用できます。|
|^|*ポート*|<|<|ポート番号を入力します|
|^|*コマンド*|<|<|コマンドを入力します。<br>マクロのサポートはスクリプトの範囲によって異なります。（上記の*範囲*を参照）カスタム[ユーザーマクロ](/manual/config/macros/user_macros)がサポートされています。|
|<|スクリプトタイプ: Telnet|<|<|<|
|^|*ユーザー名*|<|<|ユーザー名を入力します|
|^|*パスワード*|<|<|パスワードを入力します|
|^|*ポート*|<|<|ポート番号を入力します|
|^|*コマンド*|<|<|コマンドを入力します。<br>マクロのサポートはスクリプトの範囲によって異なります。（上記の*範囲*を参照）カスタム[ユーザーマクロ](/manual/config/macros/user_macros)がサポートされています。|
|<|スクリプトタイプ: IPMI|<|<|<|
|^|*コマンド*|<|<|IPMIコマンドを入力します。<br>マクロのサポートはスクリプトの範囲によって異なります。（上記の*範囲*を参照）カスタム[ユーザーマクロ](/manual/config/macros/user_macros)がサポートされています。|
|*説明*|<|<|<|スクリプトの説明|
|*ホストグループ*|<|<|<|スクリプトを使用できるホストグループを選択します（すべてのホストグループの場合は*すべて*）|
|*ユーザーグループ*|<|<|<|スクリプトを使用できるユーザーグループを選択します。（すべてのユーザーグループの場合は*すべて*）<br>このフィールドは*範囲*が「手動ホスト処理」または「手動イベント処理」の時に表示されます。|
|*必要なホストへのアクセス権*|<|<|<|ホストグループのアクセス許可レベルを選択します - *読み取り*または*書き込み*。必要な権限レベルを持つユーザーのみがスクリプトの実行にアクセスできます。<br>このフィールドは*範囲*が「手動ホスト処理」または「手動イベント処理」の時に表示されます。|
|*確認を有効*|<|<|<|スクリプトを実行する前に確認メッセージを表示するには、チェックボックスをオンにします。この機能は、潜在的に危険な操作（再起動スクリプトなど）や時間がかかる可能性のある操作で特に役立つ場合があります。<br>このオプションは*範囲*が「手動ホスト処理」または「手動イベント処理」の時に表示されます。|
|*確認テキスト*|<|<|<|上記のチェックボックスで有効にした確認ポップアップのカスタム確認テキストを入力します（例：*リモートシステムが再起動されます。よろしいですか？*）。テキストがどのように表示されるかを確認するには、フィールドの横にある*テストの確認*をクリックします。<br>{HOST.\*}および{USER.\*}マクロがサポートされています。カスタム[ユーザーマクロ](/manual/config/macros/user_macros)がサポートされています。<br> *注：*確認メッセージのテスト時にマクロは展開されません。<br>このフィールドは*範囲*が「手動ホスト処理」または「手動イベント処理」の時に表示されます。|

[comment]: # ({/201a0633-201a0633})

[comment]: # ({ca68e16a-ca68e16a})
#### スクリプト実行と結果

Zabbixサーバーで実行されるスクリプトは、終了コードの確認を含め[コマンド実行](/manual/appendix/command_execution)セクションで説明されている順序で実行されます。スクリプトの結果は、スクリプトの実行後に表示されるポップアップウィンドウに表示されます。

*Note:* スクリプトの戻り値は標準エラーとともに標準出力です。

以下のスクリプトと結果ウィンドウの例を参照してください。

    uname -v
    /tmp/non_existing_script.sh
    echo "This script was started by {USER.USERNAME}"

![](../../../../../assets/en/manual/web_interface/frontend_sections/administration/script_result.png)

スクリプトの結果にスクリプト自体は表示されません。

[comment]: # ({/ca68e16a-ca68e16a})

[comment]: # ({96d6e598-96d6e598})
#### スクリプトのタイムアウト

[comment]: # ({/96d6e598-96d6e598})

[comment]: # ({5b600786-5b600786})
##### Zabbixエージェント

スクリプトの実行中にタイムアウトが発生する場合があります。

Zabbixエージェントで実行されるスクリプトの例と以下の結果ウィンドウを参照してください。

    sleep 5
    df -h

![](../../../../../assets/en/manual/web_interface/frontend_sections/administration/script_timeout_1.png)

この場合のエラーメッセージは次のとおりです。

    Timeout while executing a shell script.

このような状況を回避するためにスクリプト自体を最適化することをお勧めします。([Zabbixエージェント設定](/manual/appendix/config/zabbix_agentd)と[Zabbixサーバー設定](/manual/appendix/config/zabbix_server)のTimeoutパラメーターを対応する値（この場合は> ‘5’）に調整するのではありません）

[Zabbixエージェント設定](/manual/appendix/config/zabbix_agentd)でタイムアウトパラメータが変更された場合は、次のエラーメッセージが表示されます。

    Get value from agent failed: ZBX_TCP_READ() timed out.

これは、[Zabbixエージェント設定](/manual/appendix/config/zabbix_agentd)で変更が行われたことを意味し、[Zabbixサーバー設定](/manual/appendix/config/zabbix_server)でもタイムアウト設定を変更する必要があります。

[comment]: # ({/5b600786-5b600786})

[comment]: # ({0b38e381-0b38e381})
##### Zabbix サーバーとプロキシ

Zabbixサーバーで実行されているスクリプトの例と以下の結果ウィンドウを参照してください。

    sleep 11
    df -h

![](../../../../../assets/en/manual/web_interface/frontend_sections/administration/script_timeout_3.png)

このような状況を回避するためにスクリプト自体を最適化することをお勧めします。([Zabbixサーバー設定](/manual/appendix/config/zabbix_server)のTimeoutパラメーターを対応する値（この場合は> ‘11’）に調整するのではありません）

[comment]: # ({/0b38e381-0b38e381})
