Сигнализация в почте НБУ

Для тех кто администрирует почту НБУ (Национальный банк Украины)
По ряду причин для отправки корреспонденции средствами почты мы до сих пор используем 16-разрядную версию OutMail. Далее приходится написать банальщину в стиле: при отработке OutMail могут возникнуть ошибки различного характера. Например занят файл статистики.
Вся сигнализация в данном случае заключается в выбросе досовского сообщения об ошибке. При этом приложение ожидает вмешательства администратора. Если окно находится не на переднем плане... Таким образом роль сигнала зачастую выполняют отправители сообщения. А за несоблюдение регламента у нацбанка вполне ощутимые санкции.
Идея решения вопроса сигнализации заключается в следующем: так как OutMail это простое приложение DOS и запускается из простого командного файла, то можно перед запуском OutMail создавать обыкновенный текстовый файл, а из параллельного процесса проверять дату создания этого файла. Назовем этот контролирующий процесс "контроллер". При этом периодичность запуска контроллера должна совпадать с периодичностью запуска командного файла, а контрольный период должен быть в два раза больше периодичности запуска. Для реализации контроллера запросто подойдет программа написанная на VBScript.
Пример
Командный файл outmail.bat. Периодичность запуска один раз в три минуты.

...
echo outmail > c:\outmail.txt
...
outmail.exe

Контролирующий скрипт outmail.vbs. Периодичность запуска один раз в три минуты. Контрольное время = 6.

filename = "c:\\outmail.txt"
todo = "notepad.exe"
redtime = 6 ' контрольное время

Set obj = WScript.CreateObject("WScript.Shell")
Set fso = CreateObject("Scripting.FileSystemObject")

If (fso.FileExists(filename)) Then
Set file = fso.GetFile(filename)
x = DateDiff("n", file.DateLastModified, Now)
Else
x = 0
End If

if x>redtime then
obj.Run todo, 1, false
end if

Все что хочется добавить, это то что при ошибке выполнения OutMail естественно запускается не notepad, а ...
В остальном это реальное решение. Оно стоит в боевой эксплуатации и скромно делает свое дело.

1 комментарий:

Анонимный комментирует...

есть еще один вариант мониторить outmail через протокол SNMP http://nbumailmon.ho.ua