ich weiss leider nicht mehr weiter und die Frustration ist gross.
Ich lade via http ein Logfile von einem Server und wuerde gern in dem Logfile nach einem bestimmten Wert suchen und mir diesen ausgeben lassen.
Mit Linux-Bordmitteln kein Problem (z.B: mittels grep und/oder awk waere das laengst in trockenen Tuechern ) aber vermeintlich einfache Sachen gestalten sich fuer mich in Python doch relativ schwierig. Sei's drum, ich bin mir sicher, dass sich mit Python auch eine Loesung fuer mein Problem finden laesst.
Ich waelze in meinem Pythonbuch immer und immer die selben Seiten, komme aber nicht auf die richtige Loesung oder ueberlese sie nur immer wieder.
Was soll's, ich schildere mal mein Problem.
Ich hole via http-Request ein logfile ab. Soweit kein Problem.
Code: Alles auswählen
#!/usr/bin/env python3
import requests,string
username = "admin"
password = "xxxxxxxxxx"
miniserver = "http://xxxxxx/log/def.log"
matches = "SDC number of errors: "
r = requests.get(miniserver,
auth=requests.auth.HTTPBasicAuth(
username, password
))
output = r.content.decode("utf-8")
Dieses Logfile ist ziemlich gross und ich such in diesem Logfile die Zeile "SDC number of errors: 2", bzw explizit die Zahl in dieser Zeile. Bestenfalls immer das letzte Vorkommen in dem Logfile. Also den aktuellsten Eintrag.2017-01-04 15:55:21.859;User admin logged in from 192.168.xx.xx; Method: encrypted\r\n2017-01-04 18:30:15.181;Save network config: IP: 192.168.xx.xxx, Mask: 255.255.255.0, Gateway: 192.168.xx.xxx, NTP: Undefined\r\n2017-01-04 18:30:15.181;PRG Loxone Config logon from 192.168.xx.xxx\r\n2017-01-04 18:30:24.068;Read config: combine custom changes - file size 136\r\n2017-01-04 18:48:41.796;PRG got restart command\r\n2017-01-04 18:48:42.351;Remove old custom changes\r\n2017-01-04 18:49:01.750;PRG start program\r\n2017-01-04 18:49:02.352;RestoreRemanenceState /sys/rem/rem20.xml and /sys/rem/rem120.xml\r\n2017-01-04 18:49:04.800;weather error authentication exception: user is not activ\r\n2017-01-04 18:49:10.299;PRG start Liveview\r\n2017-01-04 18:49:13.889;User admin logged in from 192.168.xx.xxx; Method: encrypted\r\n2017-01-04 18:50:00.004;SDC number of errors: 2\r\n
Mich nervt das Problem, weil es sich irgendwie "einfach" anfuehlt, ich es aber nicht mit meinen beschraenkten Wissen loesen kann.
Ich brauche auch nicht zwangslaeufig einen fertigen Code, aber eine Idee, wie ihr an die Sache herangehen wuerdet, waere echt hilfreich.
Ich habe nicht mal einen richtigen Plan, wie man mit Python an so eine Sache heran geht.
Mit den Werkzeugen .find(), .count(), etc habe ich schon rumgespielt, liefern mir aber allesamt nicht die Zahl, die ich brauche, sondern nur Informationen ueber die Zeile die ich suche, nicht aber deren Inhalt. puhhh...
Vielen Dank schon mal fuer Denkanstoesse!
Gruss,
tholle