2016-06-26 3 views
0

Предположим, что в журнале каждый год может появляться 4 разных типа шаблонов (ошибок). Например: «исключение тайм-аута», «ошибка ldap», «ошибка db», «ошибка четыре». Может ли любое место предоставить мне скрипт о том, как: grep несколько шаблонов в журнале каждый час, и если скрипт найдет какой-либо шаблон, он должен отправить мне оповещение только один раз, никаких дубликатов предупреждений. Пожалуйста, помогите мне. СпасибоUnix grep несколько узоров каждый час

+0

StackOverflow не является сервисом по обслуживанию кода, я голосую, чтобы отметить этот вопрос как не по теме. –

ответ

0
#!/bin/bash 

while true; do 
    export ERRORS=`cat YOUR_LOG_FILE | grep -e "(timeout exception)|(ldap error)|(db error)|(error four)" 
    if [ $ERRORS ]; then 
     # sendmail or any other kind of "alert" you prefer. 
     echo $ERRORS | sendmail "[email protected]" 
    fi 
    sleep 1h 
done 
0

Сделайте запись crontab, которая будет работать один раз в час. Эта запись может позвонить по вашему сценарию:

logfile=/path/to/logfile/application.out 

function send_alert { 
    # Some sendmail or other tool to send your alert using the args 
    printf "I want to alert about %s" "$*" 
} 

# Solution only announcing errors without sending them 
grep -qE "timeout exception|ldap error|db error|error four" ${logfile} && 
     send_alert "grep found something" 

# Solution sending number of errorlines 
errorlinecount=$(grep -c "timeout exception|ldap error|db error|error four") 
if [ ${errorcount} -gt 0 ]; then 
    send_alert "grep found ${errorcount} disturbing lines" 
fi 
Смежные вопросы