Online-Zeit aus /var/log/messages ziehen
Hallo Liste, ich möchte mir aus den archivierten Logfiles meine Online-Zeiten monatsweise extrahieren, um diese dann evtl in einer Tabellenkalkulation zu verarbeiten. Die betreffenden Zeilen sehen folgendermaßen aus: Jul 19 21:47:44 server pppd[2366]: Connect time 5.1 minutes. Die entsprechen Zeilen erhalte ich mit: #less /var/log/messages | grep "Connect time" Um die Zahlen für einen bestimmten Monat zu bekommen, hänge ich noch ein | grep "May" für den Mai dran. Damit habe ich aber erst die Zeilen. Mein Ziel ist es aber, nur die Zahl, sprich die Verbindungszeit, zu bekommen. Wie kann ich das nun bewerkstelligen? Meine Ahnung sagt mir, daß ich evtl. mit awk weiterkommen könnte, leider sind meine entsprechenden Kenntnisse dazu gleich null. Danke für Tips, Bye JT
"Jan Tim Schueszler (by way of Jan Tim Schueszler )" schrieb:
ich möchte mir aus den archivierten Logfiles meine Online-Zeiten monatsweise extrahieren, um diese dann evtl in einer Tabellenkalkulation zu verarbeiten. Jul 19 21:47:44 server pppd[2366]: Connect time 5.1 minutes. #less /var/log/messages | grep "Connect time"
/usr/bin/cut -c x-y grenzt den bereich ein auf x bis y /bin/awk '{print $z}' liefert das $z-te argument alles durch 'ne pipe jagen ... mfg thomas -- +49-431-801306 Wot're we doing to do tonight, Brain ? +49-179-5192431 The same thing we do every night, Pinky . +49-700-TRICHTER Try to TAKE OVER THE WORLD ! mailto:richter@thomas-richter.de http://www.thomas-richter.de
"Jan Tim Schueszler (by way of Jan Tim Schueszler )" wrote:
Hallo Liste,
ich möchte mir aus den archivierten Logfiles meine Online-Zeiten monatsweise extrahieren, um diese dann evtl in einer Tabellenkalkulation zu verarbeiten.
Warum so kompliziert? Geht mit isdnrep -awX -t 24/06/2001-15/07/2001 >/home/user/report.html dann kann man den file mit einem Browser ansehen. Statistik ist auch dabei! Gruß Jürgen
On Fre, 20 Jul 2001, Jan Tim Schueszler wrote:
ich möchte mir aus den archivierten Logfiles meine Online-Zeiten monatsweise extrahieren, um diese dann evtl in einer Tabellenkalkulation zu verarbeiten.
Die betreffenden Zeilen sehen folgendermaßen aus:
Jul 19 21:47:44 server pppd[2366]: Connect time 5.1 minutes.
Die entsprechen Zeilen erhalte ich mit:
#less /var/log/messages | grep "Connect time"
Das schreibe besser als: 'grep "Connect time" /var/log/messages' Das less ist eh "lfacsh" fuer diesen Zweck (cat ware richtig), aber es ist ueberfluessig.
Um die Zahlen für einen bestimmten Monat zu bekommen, hänge ich noch ein | grep "May" für den Mai dran.
Wie waere es mit sed? sed -n '/^May.*pppd.*Connect time/s/.*time \([0-9.]*\).*/\1/p' \ /var/log/messages (eine Zeile!) Zur Erklaerung: sed -n gibt keine Zeilen aus, die nicht explizit mit dem /p modifier eines Befehls ausgegeben werden. Zusammen mit: /MUSTER/ ist eine "Adresse", d.h. der folgende Befehl wird nur ausgefuehrt, wenn das Muster auf die Zeile passt. s/MUSTER/ERSETZUNG/p fuehrt einen Ersetzungsbefehl aus und gibt die Zeile aus (durch das /p auch trotz dem -n). sed -n /^May.*pppd.*Connect time/p entspricht also (ein wenig verfeintert) dem grep '^May.*Connect time' /var/log/messages zu dem sich deine beiden greps zusammenfassen lassen. Nun kommt die Ersetzung an die Reihe, die nur auf die mit /MUSTER/ ausgewaehlten Zeilen angewandt wird: s/.*time \([0-9.]*\).*/\1/p Zu deutsch: packe beliebig viele Zahlen und Punkte, die direkt aufeinander folgen und die nach einem 'time ' kommen in den Puffer 1. Das wird durch das \(\)-paeerchen bewirkt. Ersetze die ganze Zeile (wg. der '.*', der Rest dient nur zur Isolierung der Zahlen), durch den Puffer 1: Das /p besagt nun, dass die so modifizierte Zeile ausgegeben werden soll. Das Ergebnis ist nur die gewuenschte Zeit in Minuten. Laesst du das zweite .* (hinter dem '\)' weg, dann landet auch noch das ' minutes.' in der Ausgabe, willst du nur ein 'minutes', so packst du das 'minutes', aber nicht den Punkt mit in den Puffer: sed -n '/^May.*pppd.*Connect time/s/.*time \([0-9.]*.*\)\./\1/p' ^^ das greift sich das minutes, der Punkt wird durch das \. hinter dem \) ausgeschlossen. HTH -dnh -- Chance is irrelevant. We will succeed. -- Seven of Nine
participants (4)
-
David Haller
-
Jan Tim Schueszler
-
Juergen_Gowin@t-online.de
-
Thomas Richter