Bash脚本比较当前输出和5分钟前的输出



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

#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来获取最后一个和第二个值,如果差异增加阈值,则比较并触发操作,因为这个rrd数据库每300秒(5分钟)轮询一次

这样行吗?

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

相关内容

  • 没有找到相关文章

最新更新