Я пишу сценарий пользовательской проверки collectd nagios в bash. Проблема, с которой я столкнулся, заключается в том, что nagios показывает имена хостов как host.name.domain, но collectd хранит файлы WSP как host_name_domain. Мой вопрос в том, как я могу заставить переменную преобразовывать имя хоста, которое она получает от nagios (host.name.domain), в формат collectd (host_name_domain).
Это та часть, где должно произойти преобразование. Таким образом, WSP_PATH выдал бы формат сбора имени хоста в переменной $ NHOST
WSP_PATH=/var/lib/carbon/whisper/ctd/$NHOST/uptime/uptime.wsp
Bash имеет встроенную необходимую функциональность (если это не старая версия):
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 требуется, чтобы все экземпляры. заменяются на -
Хотя, если подумать, было бы разумнее выполнить эту (sed) операцию с переменной $ NHOST (теперь отредактировано, чтобы показать это)