Bash脚本将输出电流与5分钟前进行比较

时间:2015-08-07 12:08:56

标签: bash shell rrdtool

我需要在bash中编写一个脚本,它从rrd文件获取最后一个输出:

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

输出有两列和三行,我可以使用

达到我想要的值
#rrdtool lastupdate /home/usr/tmp/4880.rrd | grep -v ^$ | grep -v ^$ | awk '{print $2}'

这给出了数值输出,例如55600

现在我需要每5分钟运行一次,并将当前值与5分钟前的最后一个值进行比较,如果差异超过阈值,则触发另一个bash脚本的操作。

寻找如何完成这项工作的想法。

也可以使用rrdtool lastupdate来获取最后一个和第二个最后一个值,并且如果差异增加了阈值,则比较并触发操作,因为此rrd数据库每300秒轮询一次(5分钟。)

1 个答案:

答案 0 :(得分: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