kernel: [ 929.995186] [UFW BLOCK] IN=eth0 OUT= MAC=xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx SRC=3.18.23.154 DST=34.145.88.231 LEN=424 TOS=0x00 PREC=0x00 TTL=128 ID=21723 PROTO=UDP SPT=1900 DPT=52005 LEN=404
Увага, вузол 3.18.23.154 блоковано
notify-send --icon="info" "УВАГА, вузол 3.18.23.154 блоковано"
http://www.johnandcailin.com/blog/john/how-setup-real-time-email-notification-critical-syslog-eventsтут немає відповіді на ваше питання??
sudo tail -f /var/log/messages | fgrep '[UFW BLOCK]' | xargs -l1 -I MSG notify-send --icon="info" MSG
#!/bin/sh# The file to follow.FILE="file"# The function reads a message from stdin and displays a notification.notify() { while read MSG; do notify-send --urgency=normal --expire-time=3000 --icon=info "$MSG" done}# The pipe follows the specified file, filters the lines and displays lines that# passed a filter.tail --follow --lines=1 "$FILE" | gawk '$1 ~ /foo/ { print "[foo] Другий стовпчик: "$2 fflush() }$2 ~ /bar/ { print "[bar] Третій стовпчик: "$3 fflush()}$1 ~ /^kernel:$/ && $4 ~ /^\[UFW$/ { printf "Увага, вузол %s заблоковано!\n", substr($9, 5) fflush()}' | notify
$1 ~ /foo/ { print "[foo] Другий стовпчик: "$2 fflush() }
$2 ~ /bar/ { print "[bar] Третій стовпчик: "$3 fflush()}
$1 ~ /^kernel:$/ && $4 ~ /^\[UFW$/ { printf "Увага, вузол %s заблоковано!\n", substr($9, 5) fflush()}
Код: [Вибрати]sudo tail -f /var/log/messages | fgrep '[UFW BLOCK]' | xargs -l1 -I MSG notify-send --icon="info" MSG
tail -n0 -f /var/log/syslog | while read line; do notify-send "System Message" "$line"; done
notify-send test "`tail /var/log/syslog`"
також нічого. Що може бути не так.[/color][/size]Трохи рився в неті, знайшов рядок (вкладу знімок екрану):Код: [Вибрати]tail -n0 -f /var/log/syslog | while read line; do notify-send "System Message" "$line"; doneзапускаю його, працює. Інтерактивно, але дає усе, без фільтрації і "перетворення".
tail -n0 -f /var/log/syslog | fgrep '[UFW BLOCK]' | while read line; do notify-send "System Message" "$line"; done
tail -n0 -f /var/log/ufw.log | while read line; do notify-send "System Message" "$line"; done
Ну так вставте grep між цими командами для фільтрації:
echo "foo 123.456.789.012" | while read; do case "$REPLY" in *foo*) IP=`echo "$REPLY" | grep -oE '([0-9]{1,3}\.){3}[0-9]{1,3}' `; notify-send "UFW" "bar $IP" ;; esac; done
Код: [Вибрати]echo "foo 123.456.789.012" | while read; do case "$REPLY" in *foo*) IP=`echo "$REPLY" | grep -oE '([0-9]{1,3}\.){3}[0-9]{1,3}' `; notify-send "UFW" "bar $IP" ;; esac; done
вставив у тестовий файл повний рядок "Jun 11 20:20:02 john-desktop kernel: [ 4523.244123] [UFW BLOCK].........................", зберіг - нема реакції.
Jun 11 20:20:02 john-desktop kernel: [ 4523.244123] [UFW BLOCK] IN=eth0 OUT= MAC=xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx SRC=3.18.23.154 DST=34.145.88.231 LEN=424 TOS=0x00 PREC=0x00 TTL=128 ID=21723 PROTO=UDP SPT=1900 DPT=52005 LEN=404
$0 ~ /\[UFW BLOCK\]/ { printf "Увага, вузол %s заблоковано!\n", substr($13, 5) fflush()}
Пробував змінити в скрипті адресу FILE="var/log/syslog", чекав, також нічого. Що може бути не так.[/color][/size]
Трохи рився в неті, знайшов рядок (вкладу знімок екрану):Код: [Вибрати]tail -n0 -f /var/log/syslog | while read line; do notify-send "System Message" "$line"; doneзапускаю його, працює. Інтерактивно, але дає усе, без фільтрації і "перетворення". Як варіант, то дуже хороша альтернатива,