Скрипт для мониторинга логов iptables

Рейтинг: -1Ответов: 2Опубликовано: 14.08.2023

Подскажите пожалуйста как можно настроить мониторинг файла iptables.log, необходимо фиксировать размер файла и при увиличении его на более чем 10кб, отправлять сообщение с придуприждением, есть небольшой набросок но он совсем не соответсвует моей цели.

#!/bin/bash
file=iptables.log
minimumsize=90000
actualsize=$(wc -c <"$file")
if [ $actualsize -ge $minimumsize ]; then
    echo size is over $minimumsize bytes
else
    echo size is under $minimumsize bytes
fi 
mail -s "iptables.log size is change. "  mail@domen.ru

Ответы

▲ 1

Сделал чуть иначе и скрипт алертит когда разница будет в 10%

#!/bin/bash
# Переменная 1
var1=$(wc -c iptables.log | awk '{ print substr( $0, 1, length($0)-13 ) }')
# Переменная 2
var2=$(cat size.log)
# Расчет разницы в процентах между переменными
percentage_diff=$(echo "scale=2; (($var1 - $var2) / $var2) * 100" | bc)
# Сравнение разницы с 10%
if (( $(echo "$percentage_diff > 10" | bc -l) )); then
    echo true
echo 'Size iptables.log change' | mail -s 'check size iptables.log' 
mail@domen
    wc -c iptables.log | awk '{ print substr( $0, 1, length($0)-13 ) }'> 
size.log
    else
    echo false
 fi
▲ 0

Используйте stat для получения размера фафла:

$ stat --help
...  
%s   полный размер в байтах
...

$ stat -c %s filename.log
108

Как заметили в комментариях выше вычисления не имеют особого смысла, просто установите неообходимое значение с учетом 10кб:

alert(){
    echo 'Size iptables.log change' | mail -s 'check size iptables.log' mail@domen
}

max=1000
cur=$(stat -c %s filename.log)
((cur>max)) && alert