ipac-ng Ausgabe per Script auswerten

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
sthiem
Beiträge: 119
Registriert: 12.02.2004 16:29:40

ipac-ng Ausgabe per Script auswerten

Beitrag von sthiem » 11.07.2006 11:33:58

Hi, ich habe hier ipac-ng laufen, welches mit den Traffic für einen bestimmten Zeitraum anzeigen kann. Der Traffic ist nach IP Adressen geordnet, die Ausgabe von ipacsum sieht so aus:

Code: Alles auswählen

Host: ipac / Time created: 2006/07/11 11:22:15 CEST
Data from 2006/07/10 22:35:17 CEST to 2006/07/11 11:22:15 CEST
 Total ausgehend                               :            1MB
 Total eingehend                                :            12MB 

  userx_192168055_out                      :            1MB
  userx_192168055_in                        :          11MB
  
  usery_192168056_out                      :            0MB
  usery_192168056_in                        :            1MB


Es sind ungefähr 50 Benutzer, die nach obigem Prinzip als Regel angelegt sind. Also der Name der Rule besteht halt aus nachname_ip_in/out und dann kommt die übertragene Datenmenge. Ich würde nun gerne die beiden Werte der jeweiligen Nutzer zusammenzählen und in folgendem Format in eine Datei schreiben:

Userx - 192.168.0.55 - 12MB


Leider habe ich keine Ahnung, wie ich dabei vorgehen soll. Mit Scripting habe ich bisher leider überhaupt keine Erfahrung gemacht :( Wäre es möglich, dass ihr mir eine Hilfestellung / Ansatz gebt?

Grüße
Sebastian

Benutzeravatar
Hosi
Beiträge: 226
Registriert: 17.03.2003 15:17:29

Beitrag von Hosi » 13.07.2006 14:35:09

Folgendes Skript z.B. in /usr/local/bin/ipac.pl abspeichern:

Code: Alles auswählen

#!/usr/bin/perl -w 

while(<>){
   ($user, $ip, $traffic) = ($_ =~ /^\s+(.*)_(.*)_.*\s+:\s+(\d+)\w$/);
   $users->{"$user - $ip"}->{"traffic"} += $traffic if($traffic);
}

foreach (keys %$users){
  print $_ . " - " . $users->{$_}->{"traffic"} . "\n";
}
Dann kannst Du über

Code: Alles auswählen

ipacsum --fixed-quantity M | /usr/local/bin/ipac.pl > ipac.txt
in die Datei ipac.txt schreiben (ÜBERschreiben, um genau zu sein).

Das "fixed-quantity" ist notwendig, weil die Möglichkeit besteht, dass jemand 1G herunterlädt, aber nur 2M hochlädt. Wenn man dann nur die beiden Zahlen aufaddiert, bekommst Du eine "3" ohne zu wissen, ob GB oder MB.

Mit den IP-Adressen gibt es auch ein Problem, da Du die einzelnen Oktetts nicht von einander trennst. So kann z.B. mit 1921681123 die IP-Adresse 192.168.1.123 oder auch die 192.168.11.23 gemeint sein.

sthiem
Beiträge: 119
Registriert: 12.02.2004 16:29:40

Beitrag von sthiem » 14.07.2006 00:44:08

Danke schonmal für das Script :)
Die User liegen alle im Netzwerk 192.168.0.0. Es ändert sich also nur das letzte Byte

Antworten