Pingauswerter tool

03/09/2008 - 16:16 von FNUSNU | Report spam
Hi Community,
Ich habe ein kleines Auswertetool um meine Internetverbindung zu testen,
gebastelt. Die Idee ist einfach. Alle 30s wird ein Ping gesendet. Mich
interessieren natürlich nur die "Time outs". Ping-ausgabe wird in eine
Datei umgeleitet und sieht folgendermaßen aus:

62.204.162.1, 32 bytes, 25ms, 30.08.2008, 21:10:17
62.204.162.1, 32 bytes, 31ms, 30.08.2008, 21:10:47
62.204.162.1, 32 bytes, 26ms, 30.08.2008, 21:11:17
62.204.162.1, Request timed out, 31.08.2008, 02:54:13
62.204.162.1, Request timed out, 31.08.2008, 02:54:43
62.204.162.1, Request timed out, 31.08.2008, 02:55:13
62.204.162.1, Request timed out, 31.08.2008, 02:55:43

Wie schon geschrieben es geht nur um Time outs die mir angezeigt werden
sollen. So sieht mein Program aus:


#find text,string

from re import *
def textfind (datei):
re = compile ('\d+.\d+.\d+.\d, \D+ \D+ \D+, \d+.\d+.\d+, \d+:\d+:\d+')
f = file (datei, 'r')
string = f.read()
f.close()
return re.findall(string)

textliste = textfind ('c:\pfad\zur\datei.txt')
print 'Time outs in der Datei :'
for string in textliste: print string

Funktioniert wunderbar, ich habe eine Ausgabe von Time outs und zwar von
allen, die sich in diese Datei befinden.

Die Frage:
Was soll ich àndern / hinzufügen damit ich eine Unterteilung /
Gliederung in:
Tag(24h) Woche und Monat erhalte.

Ich befürchte das, das Problem in der Formatierung der Pingausgabe liegt.

FNUSNU
 

Lesen sie die antworten

#1 Diez B. Roggisch
03/09/2008 - 16:38 | Warnen spam
FNUSNU schrieb:
Hi Community,
Ich habe ein kleines Auswertetool um meine Internetverbindung zu testen,
gebastelt. Die Idee ist einfach. Alle 30s wird ein Ping gesendet. Mich
interessieren natürlich nur die "Time outs". Ping-ausgabe wird in eine
Datei umgeleitet und sieht folgendermaßen aus:

62.204.162.1, 32 bytes, 25ms, 30.08.2008, 21:10:17
62.204.162.1, 32 bytes, 31ms, 30.08.2008, 21:10:47
62.204.162.1, 32 bytes, 26ms, 30.08.2008, 21:11:17
62.204.162.1, Request timed out, 31.08.2008, 02:54:13
62.204.162.1, Request timed out, 31.08.2008, 02:54:43
62.204.162.1, Request timed out, 31.08.2008, 02:55:13
62.204.162.1, Request timed out, 31.08.2008, 02:55:43

Wie schon geschrieben es geht nur um Time outs die mir angezeigt werden
sollen. So sieht mein Program aus:


#find text,string

from re import *
def textfind (datei):
re = compile ('\d+.\d+.\d+.\d, \D+ \D+ \D+, \d+.\d+.\d+, \d+:\d+:\d+')
f = file (datei, 'r')
string = f.read()
f.close()
return re.findall(string)

textliste = textfind ('c:\pfad\zur\datei.txt')
print 'Time outs in der Datei :'
for string in textliste: print string

Funktioniert wunderbar, ich habe eine Ausgabe von Time outs und zwar von
allen, die sich in diese Datei befinden.

Die Frage:
Was soll ich àndern / hinzufügen damit ich eine Unterteilung /
Gliederung in:
Tag(24h) Woche und Monat erhalte.

Ich befürchte das, das Problem in der Formatierung der Pingausgabe liegt.



Zuerstmal die regulaeren Ausdruecke loswerden. Ein simples

for line in open(datei):
record = [r.strip() for r in line.split(",")]
if len(record) == 4: # timed out hat ein komma weniger
ip, _, date, time = record
...

ist alles was du brauchst - und viel klarer.

Danach geht's weiter mit dem Modul datetime, und dort speziell der
Funktion strptime.

import datetime

when = datetime.datetime.strptime(date + time, "%d.%m.%Y %H:%M:%S")

und schon hast du einen Zeitpunkt.

Diez

Ähnliche fragen