Мне нужно написать скрипт оболочки/perl для сканирования файла журнала за последние 30 минут. Требование состоит в том, чтобы запланировать запуск этого сценария в Cron каждые 30 минут и поиск строки ошибки.Сканирование файлов журнала за последние 30 минут данных
OS: Solaris
Shell:Bash
Я попытался ниже сценарий, но он был слишком длинным и неуклюжим, у нас есть другой способ сделать это немного короче?
blogs=/opt/docs/datapower/prod/business.log
slogs=/opt/docs/datapower/prod/system.log
starttime=$(date +'%H')
currmin=$(date +'%M')
curdate=`date|cut -d' ' -f5`
echo $(date)
if [ $currmin -le 29 ] && [ $starttime -ne 00 ] ; then
starttime1=`echo "$(date +'%H') - 1" | bc`
logtime="$starttime1"
logtime="$logtime:[3-5][0-9]"
echo $logtime
elif [ $currmin -le 29 ] && [ $starttime -eq 00 ] ; then
logtime="23:[3-5][0-9]"
echo $logtime
else
logtime="$starttime"
logtime="$logtime:[0-2][0-9]"
echo $logtime
fi
if (grep "$logtime" $slogs | egrep "AAA Authentication Failure|AAA Authorization Failure") > dptest 2>&1;then
Do something
fi
ОБНОВЛЕНИЕ: Добавление примера ведения журнала. Ниже приведен пример журнала заявления: Nov 20 06:06:58 business-log-sta [DP-Domain-STAGING][0x80000001][business-log][info] mpgw(GenServiceMPG): trans(31513092)[request]: AAA Authentication failure/>
Можете привести пример строки журнала? – Sobrique
В вопросе добавлена строка с примером журнала. – user2607367
Просто дикая догадка, Solaris с perl '5.8.x', поэтому модуль 'Time :: Piece' не установлен. –