Как получить из Python win32evtlog остальную информацию?
Используя win32evtlog, я могу получить следующую информацию:
events = win32evtlog.ReadEventLog(loghandle, flags, 0)
while events:
for event in events:
print 'Event Category:', event.EventCategory
print 'Time Generated:', event.TimeGenerated
print 'Source Name:', event.SourceName
print 'Event ID:', event.EventID
print 'Event Type:', event.EventType
data = event.StringInserts
if data:
print 'Event Data:'
for msg in data:
print msg
events = win32evtlog.ReadEventLog(loghandle, flags, 0)
Но если мы посмотрим на структуру событий:
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
- <System>
<Provider Name="PRNAME" />
<EventID Qualifiers="0">18</EventID>
<Level>0</Level>
<Task>0</Task>
<Keywords>0xa0000000000000</Keywords>
<TimeCreated SystemTime="2012-04-03T05:30:02.000000000Z" />
<EventRecordID>2387524</EventRecordID>
<Channel>PRNAME</Channel>
<Computer>A00001</Computer>
<Security />
</System>
- <EventData>
<Data>tst</Data>
<Binary>01020304</Binary>
</EventData>
</Event>
Мы можем найти там дополнительную информацию:
- Название канала - это отличается от имени провайдера
- EventRecordId
- компьютер
- двоичный
и другие. Как их получить? Мне особенно нужны Binary и EventRecordId, но я думаю, что должен быть способ получить все данные из журнала событий.
2 ответа
Вы пробовали это?
events = win32evtlog.ReadEventLog(loghandle, flags, 0)
if events:
print dir(events[0])
Я получаю некоторые поля, которые вы искали:
- Номер записи
- Имя компьютера
Если вы не против использовать BeautifulSoup поверх данных в формате xml, то вот пример
from bs4 import BeautifulSoup
soup = BeautifulSoup(event_log_as_xml)
print soup.find("channel").text
print soup.find("eventrecordid").text
print soup.find("computer").text
print soup.find("binary").text