Eventlog auslesen

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
JH

Eventlog auslesen

Beitragvon JH » Dienstag 7. Oktober 2003, 15:16

Moin!

Wie kann ich mir den Inhalt (Eigenschaften) eines bestimmten Events des Eventlogs anzeigen lassen? Ich komme schon an die Events ran, aber noch nicht so richtig - es ist wohl nur ein Zeiger den ich bekomme. Das habe ich bislang:

Code: Alles auswählen

import win32evtlog
import win32evtlogutil

logtype='System'
server='computername'

hand=win32evtlog.OpenEventLog(server,logtype)
print 'Handle: '+str(hand)

total=win32evtlog.GetNumberOfEventLogRecords(hand)
print 'Anzahl Ereignisse: '+str(total)

flags = win32evtlog.EVENTLOG_BACKWARDS_READ|win32evtlog.EVENTLOG_SEQUENTIAL_READ
print 'Flags: '+str(flags)

events=win32evtlog.ReadEventLog(hand,flags,0)
print 'Events: '+str(events)


Edit (Leonidas): Code in Python Tags gesetzt.
Gast

Beitragvon Gast » Montag 21. März 2005, 09:25

Hi,

über die Schleife mit win32evtlogutil.SafeFormatMessage bekommt man den Meldugnstext.

Code: Alles auswählen

for ev_obj in events:

   the_time=ev_obj.TimeGenerated.Format() #'12/23/99 15:54:09'

   evt_id=str(winerror.HRESULT_CODE(ev_obj.EventID))

   computer=str(ev_obj.ComputerName)

   cat=ev_obj.EventCategory

   seconds=date2sec(the_time)

   record=ev_obj.RecordNumber

   msg=str(win32evtlogutil.SafeFormatMessage(ev_obj, logtype))

   source=str(ev_obj.SourceName

def date2sec(self,evt_date):

   '''

   converts '12/23/99 15:54:09' to seconds

   print '333333',evt_date

   '''

   regexp=re.compile('(.*)\\s(.*)')

   reg_result=regexp.search(evt_date)

   date=reg_result.group(1)

   the_time=reg_result.group(2)

   (mon,day,yr)=map(lambda x: string.atoi(x),string.split(date,'/'))

   (hr,min,sec)=map(lambda x: string.atoi(x),string.split(the_time,':'))

   tup=[yr,mon,day,hr,min,sec,0,0,0]

   sec=time.mktime(tup)

   return sec





Leider bekommt man nur eine handvoll Meldungen zurück!
Weiss jemand wie man alle gespeicherten Meldungen zurückbekommt?


Edit (Leonidas): Code in Python Tags gesetzt.
querdenker
User
Beiträge: 424
Registriert: Montag 28. Juli 2003, 16:19
Wohnort: /dev/reality

Beitragvon querdenker » Montag 21. März 2005, 11:13

1) Bitte benutzt beim posten den Python-Button.
Einfaches copy-paste führt dazu, das der Code nicht mehr lesbar ist!

2) Registriert euch doch mal. Anonymes Frage in die Runde werfen ist "komisch"

3) In dem win32evt-Beispiel steht explizit beschrieben, das nur die Events der letzen 8 Stunden ausgelesen werden sollen. Mit anderen Worten:
Bei der Überprüfung des Alters eines Events wird ein Break ausgelöst, wenn das Alter > 8 Stunden ist.

Code: Alles auswählen

try:
  events=1
  while events:
    events=win32evtlog.ReadEventLog(hand,flags,0)
      for ev_obj in events:
        #check if the event is recent enough
        #only want data from last 8hrs
        the_time=ev_obj.TimeGenerated.Format()
        seconds=date2sec(the_time)
        #########Hier ist die Stelle!!!!######
        if seconds < begin_sec-28800:
            break
        #data is recent enough, so print it out
        computer=str(ev_obj.ComputerName)
.....


mfg, querdenker
EDIT: Datei gelöscht, daher Link gelöscht
Zuletzt geändert von querdenker am Dienstag 10. Januar 2006, 12:55, insgesamt 1-mal geändert.

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder