我正在写bash中的collectd nagios自定义检查脚本。 我遇到的问题是,nagios显示主机名为host.name.domain,但collectd将WSP文件保存为host_name_domain。 我的问题是我如何使一个variables将它从nagios(host.name.domain)获取的主机名转换为collectd格式(host_name_domain)。
这是转换必须发生的部分。 所以WSP_PATH会在variables$ 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
如上所述,/ g是必需的,以便所有的实例。 被replace为 –
尽pipe在第二个想法上,对$ NHOSTvariables执行这个(sed)操作可能会更有意义(现在编辑来显示这个)
Bash具有内置的必要function(除非是古老的版本):
WSP_PATH=/var/lib/carbon/whisper/ctd/${NHOST//./-}/uptime/uptime.wsp