я написал небольшой Баш скрипт в этом посте: How to search for a string in a text file and perform a specific action based on the resultВ то время как петля для выполнения Nagios команды не работает должным образом
Я заметил, что когда я запускал скрипт и проверьте журналы, все, кажется, работает, но когда я смотрю на пользовательский интерфейс Nagios, почти половина серверов, перечисленных в моем текстовом файле, не отключили уведомления. Пересмотренный вариант сценария ниже:
host=/Users/bob/wsus.txt
password="[email protected]"
while read -r host; do
region=$(echo "$host" | cut -f1 -d-)
if [[ $region == *sea1* ]]
then
echo "Disabling host notifications for: $host"
curl -vs -o /dev/null -d "cmd_mod=2&cmd_typ=25&host=$host&btnSubmit=Commit" https://nagios.$region.blah.com/nagios/cgi-bin/cmd.cgi" -u "bob:$password" -k 2>&1
else
echo "Disabling host notifications for: $host"
curl -vs -o /dev/null -d "cmd_mod=2&cmd_typ=25&host=$host&btnSubmit=Commit" https://nagios.$region.blah02.com/nagios/cgi-bin/cmd.cgi" -u "bob:$password" -k 2>&1
fi
done <wsus.txt>> /Users/bob/disable.log 2>&1
Если я запустить команду против серверов, имеющих проблемы вручную, он отключенный в Nagios UI, поэтому я немного запутался. FYI, я не очень разбираюсь в Bash, так что это была моя попытка попытаться автоматизировать этот процесс.
Вы можете определить из своего журнала, если проблема вызвана тем, что цикл while не считывает строки для отсутствующих серверов, или если это потому, что команда вызывается, но не выполняется? – Fred
Переименуйте host var в 'hostsfile =/Users/bob/wsus.txt', убедитесь, что файл существует, затем измените строку done на' done <$ hostsfile >> /Users/bob/disable.log 2> & 1' , Это должно сделать это. –
@NagiosSupport Это сработало, спасибо! Я также заметил, что некоторые из «неудачных» серверов раньше имели неправильное полное доменное имя в моем текстовом файле ... –