Какой рейтинг вас больше интересует?
|
Windows scripting: ведение журнала работы2008-10-16 09:07:00 (читать в оригинале)Продолжим изучение скриптов для автоматизации системного администрирования windows. В прошлый раз мы рассмотрели отправку электронной почты из vbscript. Сейчас же займемся ведением журнала работы скрипта. Известно, что в unix-системах для журналирования используется протокол syslog (описан в rfc 3164). Однако, как обычно это делается в компании microsoft, в windows сделали похожее, но своё решение — службу «Event Log». Ну да и бог с ними, хорошо что вообще что-то сделали. Рассмотрим, как отправить сообщение в журнал событий из vbscript. Для этого необходимо использовать метод LogEvent объекта WScript.Shell. Полный синтаксис можете посмотреть по приведенной ссылке сами, а мы рассмотрим пример вызова: SET shell = CreateObject("WScript.Shell") shell.LogEvent 4, "Hello world" Все очень просто. Теперь давайте сохраним эти строчки в файле C:\scripts\event_log.vbs и запустим скрипт, например с помощью двойного клика по нему в проводнике. Далее, для посмотра сообщений используется неудобная программа «Event Viewer»:
Теперь о грустном. В жертву простоты вызова из vbscript были принесены почти все возможности службы журналирования, даже те, жертвовать которыми не надо было. Самый главный недостаток — невозможно указать источник сообщения, у всех скриптов он всегда будет одинаковым и абстракным значением «WSH». Такое ощущение, что разработчики Windows Script Host даже представить себе не могли, что может потребоваться запускать более одного скрипта на компьютере. Немного исправить ситуацию можно если в тело сообщения всегда помещать имя запущенного скрипта. Это не сильно поможет при поиске событий, но хотя бы можно будет знать какой именно скрипт создал событие. Изменим наш пример: SET shell = CreateObject("WScript.Shell") shell.LogEvent 4, WScript.ScriptFullName & " script start" Вот событие полученное в результате отработки скрипта: Замечание. Судя по содержимому документа «How To Use the Event Logging Utility (Logevent.exe) to Create and Log Custom Events in Event Viewer in Windows 2000» якобы, в наборе утилит «Windows 2000 Resource Kit» должна быть утилита logevent.exe позволяющая более гибко создавать записи в журнале событий из командной строки (аналог linux-утилиты logger). Но во-первых, никакого «Windows 2000 Resource Kit» на сайте http://www.microsoft.com/downloads/ обнаружить не удалось. Во-вторых, в присутствующем там «Windows Server 2003 Resource Kit» есть куча всякого говна, но этой утилиты уже нет. Можете конечно поискать (и даже найти) эти утилиты в интернете, но у меня что-то нет доверия полученным не из официальных источников программам. Итак, если отсылка электронной почты из скриптов сделана на твердую четверку, то работа с журналом событий тянет только на два с плюсом. Незачет.
Update Как мне подсказывают в комментариях для создания записей в журнале событий можно использовать утилиту eventcreate.exe, которая по умолчанию включена в состав операционной системы. Ниже приведен пример процедуры eventCreate, которую можно копировать в свои сценарии: Set shell = CreateObject("WScript.Shell") eventCreate "information", "Hello world" ' eventType - одно из success, error, warning или information Sub eventCreate(eventType, message) logName = "application" source = WScript.ScriptName eventID = 999 Set re = New RegExp re.Pattern = """" re.Global = true message = re.Replace(message, "\""") command = "eventcreate " & _ "/l " & logName & " " & _ "/so " & source & " " & _ "/id " & eventID & " " & _ "/t " & eventType & " " & _ "/d """ & message & """" resultBad = shell.Run(command, 0, true) if resultBad Then error = source & " :" & VbCrLf & _ "error execute command" & VbCrLf & _ command & VbCrLf & _ "return code " & resultBad shell.LogEvent 1, error End If End Sub
|
Категория «Фотографы»
Взлеты Топ 5
Падения Топ 5
Популярные за сутки
|
Загрузка...
взяты из открытых общедоступных источников и являются собственностью их авторов.