Collectdnagiosカスタムチェックスクリプトをbashで作成しています。私が抱えている問題は、nagiosがホスト名をHost.name.domainとして表示しているのに、collectdがWSPファイルをHost_name_domainとして保持していることです。私の質問は、nagios(Host.name.domain)から取得したホスト名をcollectd形式(Host_name_domain)に変換する変数を作成する方法です。
これは、変換が発生する必要がある部分です。したがって、WSP_PATHは、変数$ NHOSTでホスト名のcollectd形式を提供します。
WSP_PATH=/var/lib/carbon/whisper/ctd/$NHOST/uptime/uptime.wsp
Sedを使用する:
$ NHOST="Host.domain.tld"
$ NHOST=$(echo $NHOST | sed 's/\./-/g')
$ WSP_PATH=/var/lib/carbon/whisper/ctd/$NHOST/uptime/uptime.wsp
$ echo $WSP_PATH
/var/lib/carbin/whisper/ctd/Host-domain/uptime/uptime.wsp
上記のように、のすべてのインスタンスが。 -に置き換えられます
考え直してみますが、$ NHOST変数(これを表示するように編集されています)に対してこの(sed)操作を実行する方がおそらく理にかなっています。
Bashには必要な機能が組み込まれています(古いバージョンでない限り):
WSP_PATH=/var/lib/carbon/whisper/ctd/${NHOST//./-}/uptime/uptime.wsp