2015-08-07 2 views
0

Мне нужно написать скрипт в Баш, который берет последний вывод из файла RRD, как это:Bash скрипт для сравнения выходного тока 5 минут назад

#rrdtool lastupdate /home/usr/tmp/4880.rrd 

Выход имеет два столбца и 3 строки, я могу добраться до нужного мне значения с помощью

#rrdtool lastupdate /home/usr/tmp/4880.rrd | grep -v ^$ | grep -v ^$ | awk '{print $2}' 

Это дает числовой выход, например 55600

Теперь мне нужно, чтобы запустить это каждые 5 минут и сравните текущее значение с последним значением 5 минут назад, и если разница выше порога, чем запуск действия, которое является еще одним сценарием bash.

Ищете идеи, как это сделать.

также можно использовать RRDTool lastupdate, чтобы получить последнюю и 2-ое последнее значение и сравнить и вызвать действие, если разница увеличивает порог в этом опросах базы данных RRD каждые 300 секунд (5 минут).

ответ

0

Будет ли это делать?

THRESHOLD=100 
while true; do 
    VALUE=`rrdtool lastupdate /home/usr/tmp/4880.rrd | grep -v ^$ | grep -v ^$ | awk '{print $2}'` 
    if [ -n "$OLDVALUE" ]; then 
    if [ $VALUE -gt `expr $OLDVALUE '+' $THRESHOLD` ] || [ "$VALUE" -lt `expr $OLDVALUE - $THRESHOLD` ]; then 
     echo "Oh noez, values are too different!!! new $VALUE old $OLDVALUE" 
    fi 
    fi 
    sleep 300 
    OLDVALUE=$VALUE 
done 
Смежные вопросы