ошибки из скрипта для извлечения данных из журнала - PullRequest
0 голосов
/ 19 декабря 2018

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

: не найдено [Нет такого файла или каталога]: не найдено [Нет такого файла или каталога] LogErrors.sh: строка 5: синтаксическая ошибка в строке 14: if' unmatched : not found [No such file or directory] : not found [No such file or directory] LogErrors.sh: line 5: syntax error at line 14: если 'не найдено: не найдено [Неттакой файл или каталог]: не найден [Нет такого файла или каталога] LogErrors.sh: строка 5: синтаксическая ошибка в строке 14: `while 'не найдено

Code:


#!/bin/ksh

TOM1=/ap/mvr/servers/tomcat1/logs/
TOM2=/ap/mvr/servers/tomcat2/logs/

find $TOM1 $TOM2 -type f -name "mvr-gateway.log" | while read file
do
LOGERRORS=$(grep -B2 -A3 'WARN|ERROR|CRIT' $file)
if[[! -z $LOGERRORS]]
then
    echo "Errors in $file: $LOGERRORS" >> LogErrors.txt
fi
done

1 Ответ

0 голосов
/ 19 декабря 2018

Похоже, ваш синтаксис не совсем подходит для ksh, и вы используете синтаксис egrep для grep.

Я считаю, что это даст то, что вам нужно:

#!/bin/ksh
TOM1=/ap/mvr/servers/tomcat1/logs/
TOM2=/ap/mvr/servers/tomcat2/logs/

find $TOM1 $TOM2 -type f -name "mvr-gateway.log" |
while read file
do
    LOGERRORS=$(egrep -B2 -A3 'WARN|ERROR|CRIT' $file)
    if [[ ! -z $LOGERRORS ]]
    then
        echo "Errors in $file: $LOGERRORS" >> LogErrors.txt
    fi
done

А покаВы можете захотеть прочитать в каждой строке вывод egrep с другим while read linein (с выводом по каналу egrep).

...