ситуация следующая. фечмайл принимает почту раз в пол часа и пишет в
лог в /var/log/fetchmaillog . В начале каждой сессии вставляется дата
и время. Все это делается по крону. Далее этот лог разбирается
скриптом на перле и загоняется в VySQL. Но есть один неприятный
момент. Бывает что приходят большие письма, которые не успевают
приняться до начала новой сесси. И получается что время вставляется
всеравно и в итоге вместо нормальной строки лога я получаю:
fetchmail: reading message ugluk@mydom.ru:5 of 5 (4152551 octets) Thu Apr 27 15:30:01 NOVST 2006
fetchmail: flushed
а анализатор лога хочет
fetchmail: reading message ugluk@mydom.ru:5 of 5 (4152551 octets) fetchmail: flushed
и в итоге выходит что он считает что письма нет. Вот я и думаю как
лучше сделать тут? Переписывать заново скрипт лениво. Проще наверное
сделать чтоб если сессия не законченна, то не писать время. Но вот не
могу сообразить как лучше это сделать
#кусок из crontab -l
#mail #
30 7-19 * * 0-5 date >>/var/log/fetchmaillog
30 7-19 * * 0-5 /usr/bin/fetchmail -f /etc/fetchmailrc
00 7-19 * * 0-5 date >>/var/log/fetchmaillog
00 7-19 * * 0-5 /usr/bin/fetchmail -f /etc/fetchmailrc
#######
to sdio > спасибо! Как до меня сразу не дошло про такой способ
to gr_buza > и что мне это даст? Вопрос совсем не в том, чтоб лишний раз запустить фечмайл, а в том, чтоб в скрипте время не вставлялось, когда сессия не оконченна
Не знаю что там у тебя происходит, но возможно поможет wait
>#! /bin/sh
>
>date >>/var/log/fetchmaillog
>/usr/bin/fetchmail -f /etc/fetchmailrc
wait
>date >>/var/log/fetchmaillog
А может проще сказать fetchmail-у писать через syslog ? Это во-первых, а во-вторых, нельзя ли подправить "скрипт на перле", чтоб он анализировал в строках только "fetchmail:.*octets)" ?
&& может помочь, но время будет вставляться в конце сессии, а не в начале. Хотелось бы только в начале. Ну хотя если других вариантов нет, то сойдет и такой вариант. Время в логе нужно для того, чтоб когда звонят пользователи и начинают спрашивать было чего в таком то таком-то промежутке времени или нет, чтоб было можно хоть приблизительно глянуть. И бывает что у нас иногда канал падает (радио у нас), чтоб тож по времени можно было определиться почему почты не было. Ну примерно в этом духе
а как на баше будет выглядеть примерно такой скрипт:
проверяем есть ли процесс фечмайла
если нет, то выполняем date >>/var/log/fetchmaillog
если есть, то заканчиваем скрипт и ничего не делаем