042 Системный Администратор 05 2006

Page 33

администрирование Case 11010 WScript.Echo "Превышен интервал ожидания" ↵ & ". Buffer Size is: " & varBuffSize varBuffSize = varBuffSize - 8 Case 11011 WScript.Echo "Неверный запрос" & ↵ ". Buffer Size is: " & varBuffSize Case 11012 WScript.Echo "Неверный маршрут" & ↵ ". Buffer Size is: " & varBuffSize Case 11013 WScript.Echo "Достигнут максимальный ↵ TimeToLive" & ". Buffer Size is: " & ↵ varBuffSize Case 11014 WScript.Echo "Достигнут максимальный ↵ TimeToLive при сборке" & ↵ ". Buffer Size is: " & varBuffSize Case 11015 WScript.Echo "Ошибка параметра" & ↵ ". Buffer Size is: " & varBuffSize Case 11016 WScript.Echo "Требование снизить скорость ↵ передачи" & ". Buffer Size is: " & ↵ varBuffSize Case 11017 WScript.Echo "Переполнение опции IP" & ↵ ". Buffer Size is: " & varBuffSize Case 11018 WScript.Echo "Неверное назначение" & ↵ ". Buffer Size is: " & varBuffSize Case 11032 WScript.Echo "Установление соединения ↵ по IPSEC" & ". Buffer Size is: " & ↵ varBuffSize Case 11050 WScript.Echo "Общий сбой" & ↵ ". Buffer Size is: " & varBuffSize End Select

strComputer & "\root\CIMV2") Set objEvents = objWMIService.ExecNotificationQuery _ ("SELECT * FROM __InstanceCreationEvent WHERE ↵ TargetInstance ISA 'Win32_NTLogEvent'") Wscript.Echo "Ожидаем записи в системные журналы событий ..." Do While(True) Set objReceivedEvent = objEvents.NextEvent Select Case ↵ CInt(objReceivedEvent.TargetInstance.EventType) Case 1 strType = "Ошибка" case 2 strType = "Предупреждение" case 3 strType = "Информация" case 4 strType = "Успешный аудит" case 5 strType = "Аудит отказа" End Select WScript.Echo "----- Новое Событие -----" Wscript.Echo "Event ID: " & ↵ objReceivedEvent.TargetInstance.EventCode & ↵ " Значимость: " & strType & " Log: " & ↵ objReceivedEvent.TargetInstance.LogFile WScript.Echo "Сообщение: " & ↵ objReceivedEvent.TargetInstance.Message Loop

Как видно из примера, код WQL-запроса достаточно простой, поэтому, я полагаю, детально пояснять его не нужно. Обращу внимание лишь на одно существенNext ное обстоятельство: при работе с журналами необходимо использовать привилегию Security. В противном слуNext чае многие из запросов будут отклонены системой безоWScript.Echo "Удалось определить MTU трассы: " & ↵ пасности Windows. CStr(varMaxPacket + 28) Следующий пример, приведенный на листинге 6, покаАлгоритм работы этого сценария прост: мы посыла- зывает, как произвести очистку журнала приложений (хотя ем от нашего хоста до указанного целевого хоста пакеты, это может быть любой системный журнал аудита), испольс каждым шагом увеличивая их размер на 8 байт, устано- зуя метод ClearEventlog класса Win32_NTEventlogFile. Помивив специальный IP-флаг, запрещающий фрагментировать мо того, что нам необходимо указать привилегию Security, пакет. При этом мы следим за результатом, и как только нам также необходимо открыть конкретный экземпляр обънам вернется диагностический пакет, сообщающий о том, екта класса Win32_NTEventlogFile соответствующего журчто размер нашего исходного пакета больше допустимого, налу приложений. мы запоминаем размер последнего успешно прошедшего Листинг 6. Очистка системного журнала приложений по трассе пакета. (Application Event Log)

Обработка системных журналов

strComputer = "."

Следующий провайдер WMI, который может оказаться вам полезеным, – это провайдер системных журналов Windows. Классы, которые предоставляет в наше пользование этот провайдер, имеют названия: Win32_NTLogEvent, Win32 _ NTEventLogFile, Win32 _ NTLogEventLog, Win32_NTLogEventUser, Win32_NTLogEventComputer. Для нас наибольший интерес представляют первые два. Win32_NTLogEvent позволяет нам отслеживать события появления в системных журналах аудита новых записей. Для этого используется синхронная техника внутренних событий WMI.

Set objWMIService = GetObject("winmgmts: ↵ {impersonationlevel=impersonate,(security)}!\\" & ↵ strComputer & "\root\CIMV2")

Листинг 5. Отслеживание событий в системных журналах аудита strComputer = "." Set objWMIService = GetObject("winmgmts: ↵ {impersonationlevel=impersonate,(security)}!\\" & ↵

№5, май 2006

Set objNTEventLog = objWMIService.Get ↵ ("Win32_NTEventlogFile.Name='C:\WINDOWS\system32\ ↵ config\AppEvent.Evt'") objNTEventLog.ClearEventlog("c:\app.evt")

Обратите внимание на единственный аргумент метода ClearEventlog: «c:\app.evt». Этот аргумент задает файл, в который при очистке журнала будет сохранено старое содержимое журнала.

Работа с реестром из WMI и провайдер StdRegProv Одним из самых полезных провайдеров WMI является провайдер работы с реестром. В отличие от множества других провайдеров все его классы определены не в пространс-

31


Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.