Мониторинг файла журнала для ключевого слова и отправка уведомления по электронной почте - PullRequest
0 голосов
/ 10 мая 2019

Я хочу отслеживать журнал, который постоянно генерирует, для ключевого слова, чтобы сообщить мне, если компонент не работает. Как только ключевое слово будет идентифицировано, я хотел бы получать уведомления по электронной почте на мой личный адрес электронной почты.

До сих пор я мог выполнять мониторинг ключевых слов и уведомление по электронной почте отдельно, но никогда вместе в сценарии. Я попробовал следующее для мониторинга:

tail -fn0 user | awk '/disconnect_tcp_conn/ { print | "echo server down" }'

И это на электронную почту:

mail -s "server down.... again" blahblah@gmail.com < /dev/null

Я попробовал grep для мониторинга, но мне показалось, что awk работал лучше всего - по крайней мере, из-за того, как я его использовал. Похоже, синтаксис не может быть корректным, чтобы оба работали одновременно.

Я пробовал:

tail -fn0 user | awk '
                    /disconnect_tcp_conn/ { print | "echo server down") }
                    /disconnect_tcp_conn/ { system( "mail -s "server down.... again" blahblah@gmail.com < /dev/null ") }'

, а также:

tail -fn0 user | awk '
                    /disconnect_tcp_conn/ { print | "echo server down") }
                    /disconnect_tcp_conn/ { cmd=mail -s "server down.... again3" blahblah@gmail.com < /dev/null ") }'

Любая помощь была бы великолепна. Спасибо!

Ответы [ 2 ]

0 голосов
/ 10 мая 2019

Это также может быть сделано следующим образом:

tail -f /path/to/file | while read line
do case "$line" in
        *"server down"*) echo "$line" | mutt -s "Server Down" an_email@mail.com;
        ;;
   esac
done
0 голосов
/ 10 мая 2019

Вы можете иметь несколько строк в {action}, и вы можете избежать двойных кавычек \", через которые вы хотите пройти system():

tail -fn0 user | awk '/disconnect_tcp_conn/ { 
    system("mail -s \"server down... again\" blahblah@gmail.com </dev/null") 
    print "server down... again"
    exit
}'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...