SNMPコミュニティ名にメタキャラクタを含む文字がある場合

ネットワーク機器のトラフィック量を監視するためSNMPコミュニティ名をマクロ化して
取得したいのですが、うまくいきません。
コミュニティ名にメタキャラクタが含まれているためバックスラッシュでエスケープしていますが
うまく機能していないようです。特殊な記述方法などあるのでしょうか?

コミュニティ名のマクロ例
{$SNMP_COMMUNITY}=qwer¥$qwer

よろしくお願いします。

コメント表示オプション

お好みのコメント表示方法を選び「設定の保存」をクリックすると変更が反映されます。
ユーザー TNK の写真

エスケープせずにそのままコミュニティ名をマクロの値に設定してみてください。

ユーザー korira1303 の写真

ありがとうございます。
エスケープなしで確認できました。

続けての質問となり恐縮ですが、LLDを活用しSNMPのトラフィック計測を
自動化しようと思っております。
Zabbix標準では、実ポート名とDescriptionの両方が同時に表示することはできないため
http://qiita.com/usiusi360/items/0972da38984a82e43e74を参考の上、設定をしたのですが
メタ文字が含まれているためうまく動作しません。
なにか策があればご教示ください。よろしくお願いします。

ユーザー TNK の写真

残念ながら、外部チェックの呼び出しでコマンド行を作成する時に、
メタ文字($など)の考慮がされていないため、メタ文字を含むよう
なコミュニティ名であった場合、参考にされた記事にあるシェルス
クリプトにコミュニティ名をそのまま引き渡すことが難しそうです。

同様の問題が、メディアに登録したアラートスクリプトの呼び出し
処理であったのですが、こちらは、先日リリースされた2.2.10など
であれば対応されているようです。

ZBX-4529
Some shell metachars not escaped when call alert script
https://support.zabbix.com/browse/ZBX-4529

ということで、現時点ではメタ記号を含むようなコミュニティ名を
利用している場合は、外部チェックを利用してディスカバリを行う
ようなことはできなさそうです。

無理矢理実現するためには、実際のコミュニティ名とは別の英数字
のみの値を利用するマクロを別途用意し、それを外部チェックの引
数に指定して、それで呼びだされたスクリプト内で、引数で指定さ
れたコミュニティ名に置き換えてsnmpwalkを実行するような方法が
考えられます。

ただし、この方法では、コミュニティ毎にコミュニティ名と変数の
2つの値を設定しなければなりませんし、新規にコミュニティが増
えた際に呼び出すスクリプトに条件分岐の追加が必要となりますの
で管理が面倒になってしまうと思われます。

ユーザー korira1303 の写真

ありがとうございます。
コミュニティ名の置き換えをまずは実施してみます。
メタ文字が問題だとはっきりわかって助かりました。
ご丁寧にありがとうございました。