Разработка динамических сайтов
SEO услуги
Управление контекстной рекламой

Вход на хостинг

Имя пользователя:*

Пароль пользователя:*

IT-новости

20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла

Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......

подробнее

30.07.2015 Ищем уникальный контент для сайта

Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......

подробнее

11.05.2015 Распространённые ошибки разработчиков сайтов

Не секрет, что в сети Интернет насчитывается миллионы сайтов, и каждый день появляются тысячси новых......

подробнее

os.popen(lda_command).write(mail))

Напомню, что все тестовые сценарии мы сохраняем под именем maildigest.py, чтобы не вносить каждый раз изменения в /etc/mail/aliases.

Здесь с помощью той же функции popen() создается канал с утилитой mail.local.suid, на вход которой передается текст сообщения, сохранённого в файле в результате предыдущего эксперимента. Пользователя-получателя указываем явно (admin). В принципе этот сценарий можно выполнить и непосредственно из командной строки, но лучше использовать тот же способ запуска через aliases, чтобы лишний раз убедиться в отсутствии проблем с правами доступа и переменными окружения.

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

Сбор статистики и формирование «дайджеста»

Информация об обнаруженном вирусе (его название) содержится в последней строчке уведомления (если быть точнее, то в предпоследней, а последняя – пустая). Если эту строку разбить по пробелам, то нужное нам имя получим во втором поле.

Учитывая, что на моём сервере больших нагрузок не предвидится, для хранения результата я выбрал формат DBM.

В стандартную поставку Python включён модуль anydbm, который самостоятельно определяет, какая именно реализация DBM используется в вашей системе, так что об этом нам заботиться не придётся. Данные в этом формате хранятся в виде пар «имя – значение». Единственный его недостаток в нашем случае – это то, что он позволяет хранить только текстовые данные, т.е. придётся в процессе работы выполнять преобразования сохранённого значения, отражающего количество обнаруженных вирусов данного типа, из строки в число и обратно.

Для удобства будем хранить информацию посуточно, для чего имя db-файла будет формироваться с учётом текущей даты (см. код сценария ниже).

Наконец, при смене даты нам нужно будет формировать и отправлять сводный отчёт за прошедшие сутки. Поскольку отчёт предназначается локальному пользователю, то проще всего будет сформировать «вручную» сообщение с нужными заголовками и воспользоваться тем же LDA для его доставки.

Реализация

Итак, приступим к разработке сценария. Чтобы сохранить целостность восприятия, полностью приведу прокомментированный текст скрипта, а ниже дам некоторые пояснения.

Листинг 3. Сценарий maildigest.py

 

#!/usr/local/bin/python

# -*- coding: koi8-r -*-

 

# Импортирование нужных модулей

import os, sys, rfc822, anydbm

from StringIO import StringIO

from time import ctime, strftime

 

# «Родительские» каталоги для размещения файлов

prefix_bin = '/usr/local/scripts/maildigest/'

prefix_var = '/var/scripts/maildigest/'

 


Предыдущая страницаОглавлениеСледующая страница
 
[001] [002] [003] [004] [005] [006] [007] [008] [009] [010] [011] [012] [013] [014] [015] [016] [017] [018] [019] [020]
[021] [022] [023] [024] [025] [026] [027] [028] [029] [030] [031] [032] [033] [034] [035] [036] [037] [038] [039] [040]
[041] [042] [043] [044] [045] [046] [047] [048] [049] [050] [051] [052] [053] [054] [055] [056] [057] [058] [059] [060]
[061] [062] [063] [064] [065] [066] [067] [068] [069] [070] [071] [072] [073] [074] [075] [076] [077] [078] [079] [080]
[081] [082] [083] [084] [085] [086] [087] [088] [089] [090] [091] [092] [093] [094] [095] [096] [097] [098] [099] [100]
[101] [102] [103] [104] [105] [106] [107] [108] [109] [110] [111] [112] [113] [114] [115] [116] [117] [118] [119] [120]
[121] [122] [123] [124] [125] [126] [127] [128] [129] [130] [131] [132] [133] [134] [135] [136] [137] [138] [139] [140]
[141] [142] [143] [144] [145] [146] [147]

+7 (831) 413-63-27
ООО Дельта-Технология ©2007 - 2023 год
Нижний Новгород, ул. Дальняя, 17А.
Rambler's Top100