LINUX.ORG.RU

Nagios проверка на bash


0

1

Есть код на баше для проверки и парсинга страницы.

 
#!/bin/bash
COMMAND=$(wget -q -O test.html http://test/test.html)
var=$(grep -m1 '<td bgcolor="#add8e6">.*</td>' test.html | tr '<>' '\n\n' | awk '/#add8e6/ {getline; print $1$2}')
echo $var
#E_SUCCESS="0"
#E_WARNING="1"
#E_CRITICAL="2"
#E_UNKNOWN="3"

if (( "$var"  > 0  && "$var" <5 ));
then
        echo "Ok"
                stateid=0
elif (( "$var" > 5 && "$var" <10 ));
then
        echo "Warning"
                stateid=1
elif  (( "$var" > 10 ));
then
        echo "Critial"
                stateid=2
fi
exit $stateid
Выходит он без статуса для нагиоса,а просто
test.sh: 22: 865.0k: not found
Как исправить ошибку?
На выходе парсинга имеем число и k или M.Как можно преобразовывать значение в число и с условием что будет или k or M.


делаешь успехи, молодец ;)

на тебе еще пищи для ума:

a="5"
[ $a -gt 4 ] && echo yeah || echo nope

aol ★★★★★ ()
Ответ на: комментарий от cy4apa

так у тебя в $var 685.6k? тогда надо их преобразовать в нормальные числа.
k - я так понимаю, тысячи? отрежь от строки эту «к», а потом с помощью expr или bc можно помножить на 1000.

aol ★★★★★ ()
Ответ на: комментарий от aol

Убрал $2, теперь это всегда число.
Но как быть с

test.sh: 24: 785.0: not found
test.sh: 24: 785.0: not found
test.sh: 24: 785.0: not found

cy4apa ()
Ответ на: комментарий от aol

Это не тысячи,просто показывается скорость в «к».Будут мегабИты будет «M» Но это не суть,сейчас они всегда числа без k or m.

cy4apa ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.