我需要在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