#!/usr/bin/env bash # Быстро проверяем передачу первого аргумента. # Подсказываем как его передать. if [ $# -gt 0 ]; then echo "Need date. Example: ./fbl.sh 31.02.2018"; exit 1; fi # Забираем дату, если передана. searchDate=$1; # Конвертируем дату в удобный для работы формат. # Так же получаем две предыдущих даты от введённой. convDate=`echo $searchDate | awk -v FS=. -v OFS=/ '{print $2,$1,$3}'`; engDate0=`date -d "$convDate" +'%a, %d %b'`; engDate1=`date -d "$convDate -1 day" +'%a, %d %b'`; engDate2=`date -d "$convDate -2 days" +'%a, %d %b'`; # Укажем email, и директорию в нём, куда складываются FBL отчёты. searchEmail=artem@mail.com; searchFolder=inbox/mail-ru-fbl; # Укажем данные, которые нужны для определения полного пути до письма. fileBits=12; mailboxId=6; mailDatabase=mboxgroup6; # Выполняем поиск всех писем за нужную дату в директории. # Получаем ID каждого письма. # Для каждого письма вычисляем путь и пишем эту информацию в tmp файл. for messageId in `zmmailbox -z -m $searchEmail s -t message -l 1000 "in:$searchFolder date:$searchDate" | grep mess | awk '{print $2}'`; do hashdirOne=`perl -le 'print $ARGV[1] >> $ARGV[0]' $fileBits $mailboxId`; hashdirTwo=`perl -le 'print $ARGV[1] >> $ARGV[0]' $fileBits $messageId`; ls /opt/zimbra/store/$hashdirOne/$mailboxId/msg/$hashdirTwo/$messageId-*.msg >> /tmp/fblmails.tmp; done; # Записанный файл обрабатываем построчно, выбирая из него только # письма с отчётами об инцедентах за текущий и два предыдущих дня. # Попавшие под условие IP пишем в tmp файл. while read line; do cat $line | grep ", IP " | grep -E "$engDate0|$engDate1|$engDate2" >> /tmp/fblips.tmp; done