我有一个日志文件,里面有下面的几行。我需要一个 bash 脚本,它获取粗体值 (4092.1M / 20.1G) 并进行计算,然后从 Zabbix 发出警报
[伊甸园:3728.0M(3728.0M)->0.0B(3952.0M)幸存者:368.0M->144.0M 堆:4092.1米(48.0G)->144.0米(48.0G)]
[伊甸园:3568.0M(3568.0M)->0.0B(3568.0M)幸存者:528.0M->528.0M 堆:20.1G(48.0G)->16.7G(48.0G)]
如果该值超过 30G 则应该发出警告,如果该值超过 35G 则应该发出警报。
请查找上例中给出的 MB / GB。我需要识别它是什么格式并相应地读取值。
你能帮我一下吗
答案1
您可以将此作为起点,并根据您的喜好进行调整:
#!/bin/bash
logfile="/var/log/file.log"
while read line; do
value=`echo $line | awk -F: '{print $4}' | awk -F'(' '{print $1}' | sed 's/^.//'`
if [ "`echo $value | grep -o ".$"`" == "M" ]; then
value=`echo $value | awk -F'.' '{print $1}'`
value=$((value/1000))
elif [ "`echo $value | grep -o ".$"`" == "G" ]; then
value=`echo $value | awk -F'.' '{print $1}'`
fi
if [ $value -gt 30 ] && [ $value -lt 35 ]; then
echo "Warning: value is greater than 30G"
elif [ $value -gt 35 ]; then
echo "Alert: value is greater than 35G"
fi
done < $logfile