いつもお世話になっています。
アクションのリモートコマンドにて「最新の値({ITEM.LASTVALUE})」を
引数としてシェルを実行したいと考えています。
しかし、イベントログなど複数行の項目に関して、全部の内容を受け渡す
ことが出来ていません(1行目のみ渡される)。
複数行の値を全部シェルに渡すようにすることは出来るでしょうか?
<ZabbixServer>
Zabbix:1.8.5
OS :CentOS6.2
<ZabbixAgent>
Zabbix:1.8.5
OS :WindowsServer2008R2
TNK - 投稿数: 4769
複数行がスペース(0x20)区切りでつながってませんか?
つまり、すべての値が渡されているけれども1行につながってしま
っていませんか?
単純に$1、$2、$3などをそのまま扱うとそうなります。
例えば、"$3"というようにダブルコーテーションでくくると、改行
コードも一緒に扱えると思います。
アクションで指定された内容とスクリプトに渡された内容とを再度
比較しながら確認してみてください。
GUITU - 投稿数: 20
TNK様
いつもありがとうございます。
「{ITEM.LASTVALUE}」を「"{ITEM.LASTVALUE}"」として引数に指定した場合、
改行コードで切れてしまい、ZabbixAgentで異常終了してしまっていました。
("の数が合わない状態での実行のため?)
実際に実行されるシェルでログを出力しているのですが、なにも出力されて
いませんでした。
TNK - 投稿数: 4769
説明が十分ではなかったようです。
ダブルコーテーションでくくるのは、アクションの設定内ではなく、
シェルスクリプト内での変数の取り扱いです。
実際に試せていないのですが、シェルスクリプト側で$1とか
$2とか引数から取得しているあたりを確認してみてください。
--- 追記 ---
リモートコマンドでうまくいかない場合、Zabbixサーバ側で実行
しても良いものであれば、メール送信などと同様にメール送信で
はなく、スクリプトを「メディアタイプ」として登録して、アク
ションから呼び出せば、引数に改行コードが入っていても扱える
ことが確認できています。
GUITU - 投稿数: 20
TNK様
こちらからの説明が足りないようですみません。
以下、試してみた結果となります。
<トリガー定義>
トリガーコメント{TRIGGER.COMMENT}:
TH[改行]
トリガーコメント欄
<アクション定義>
リモートコマンド:
ホスト名:/tmp/Shell_dbg.sh {TRIGGER.COMMENT}
<Shell_dbg.sh>
#!/bin/sh
echo $@ >> /tmp/Shell_dbg.log
exit 0
上記設定内容で、アクションが実行された場合、ログなどには以下のように出力されました。
<監査アクション>「管理」-「監査」-「アクション」
ステータス:実行
メッセージ:
コマンド:
ホスト名:/tmp/Shell_dbg.sh TH トリガーコメント
<ZabbixAgentログ>
21591:20120523:110447.526 Executing command '/tmp/Shell_dbg.sh TH'
</tmp/Shell_dbg.log>
TH
監査アクションの時点では、TNK様が書かれているとおり改行がスペースとなっています。
しかし、ZabbixAgentのログを見る限りでは、改行以降が落ちてしまっています。
なにか設定等で変わってしまうものなのでしょうか?
すみませんが、よろしくお願いいたします。
TNK - 投稿数: 4769
いくつかの設定を試してみましたが、リモートコマンドでは、改行
が入るとそこまでをコマンドと引数とみなしてコマンドを実行して
しまうようです。
昨日も書きましたが、Zabbixサーバ上での実行でよろしければ、リ
モートコマンド実行ではなくメール送信と同様にメディアの一つと
してスクリプトを実行するようにすることで、改行が含まれる引数
も引き渡すことができますので、そちらを利用されてみてはいかが
でしょうか?
GUITU - 投稿数: 20
TNK様
回答ありがとうございます。
メディアで試してみます。