Я пишу сценарий для скручивания веб-страницы и grep / sed / sort / tail для числа, а затем использую коды выхода nagios для мониторинга. Мой сценарий bash выглядит следующим образом:
queue= curl -s 'site | grep -ohE 'READY":[0-9]+' |\
sed 's/READY"://' | sort -n | tail -1
if [[ $queue =~ [0-1] ]]; then
echo "OK - $queue current jobs."
exit 0
fi
if [[ $queue =~ [2-3] ]]; then
echo "WARNING - $queue current jobs in queue."
exit 1
fi
if [[ $queue =~ [4-100] ]]; then
echo "CRITICAL - $queue current jobs in queue."
exit 2
fi
Проблема, с которой я сталкиваюсь, заключается в том, что он возвращает любое число, начинающееся с 3, например, в качестве предупреждения. 3, 30, 300 и т. Д. Вместо трех.
WARNING - 39 current jobs in queue.
Предупреждение должно быть только 2-3 задания, где критичным должно быть 4-100 заданий и нормально 0-1.
Как мне установить диапазон номеров, чтобы выходить только по одной цифре, а не по нескольким цифрам?
Не используйте регулярные выражения. Это числа, и их следует рассматривать как таковые.
if [ $queue -lt 2 ]; then
echo "OK - $queue current jobs."
exit 0
fi
if [ $queue -lt 4 ]; then
echo "Warning - $queue current jobs."
exit 1
fi
if [ $queue -ge 4 ]; then
echo "CRITICAL"
exit 2
fi
-lt
= меньше; -ge
= больше равно, увидеть больше Вот