nfdump feldolgozás bash

Sziasztok

nfdump kemenetét kellene feldolgoznom, de van egy kis problémám.

amikor alapban meghívom az nfdump-ot, egy hasonlót kapok:

Date first seen          Duration Proto      Src IP Addr    Flows  Packets    Bytes      pps      bps   bpp
2009-08-08 02:04:31.850 86344.330 any     192.168.10.200    89660    2.6 M    1.4 G       30   138456   558
2009-08-08 16:14:27.760 35348.820 any     192.168.10.168    31456    1.3 M  973.5 M       38   231015   756
2009-08-08 10:57:07.450 54389.170 any      192.168.30.70    34428    1.2 M  428.6 M       23    66109   344
2009-08-08 01:34:29.670 83142.640 any     192.168.10.198    23956   505840  161.7 M        6    16312   335
2009-08-08 12:21:09.520 41404.440 any     192.168.10.104    17409   319523  103.4 M        7    20950   339
2009-08-08 14:55:35.340 40080.620 any     192.168.10.120    22682   760900  103.0 M       18    21566   142
2009-08-08 15:23:31.660 12217.190 any      192.168.10.36     7164    63165   51.9 M        5    35655   862
2009-08-08 02:02:19.340 86476.160 any     192.168.10.188    19596   431104   44.8 M        4     4346   108
2009-08-08 09:17:53.140 60341.220 any     192.168.10.110    21631   217804   34.5 M        3     4801   166
2009-08-08 09:46:44.920 19478.780 any     192.168.10.156    16578   469766   29.8 M       24    12848    66

ezzel az a gondom, hogy a bytes mező alatti értékek nem egyformák, van Giga, Mega, Byte, és így nem tudom jól
kiszedni az értékeket.

erre találtam azt, hogy az nfdump meghívható -o pipe kapcsolóval, ahol ilyen lesz a kimeneti formátum:

2|1249689871|850|1249776216|180|0|0|0|0|3232238280|89660|2676165|1494370110|30|138456|558
2|1249740867|760|1249776216|580|0|0|0|0|3232238248|31456|1349041|1020764218|38|231015|756
2|1249721827|450|1249776216|620|0|0|0|0|3232243270|34428|1304953|449456418|23|66109|344
2|1249688069|670|1249771212|310|0|0|0|0|3232238278|23956|505840|169528672|6|16312|335
2|1249726869|520|1249768273|960|0|0|0|0|3232238184|17409|319523|108430303|7|20950|339
2|1249736135|340|1249776215|960|0|0|0|0|3232238200|22682|760900|108050758|18|21566|142
2|1249737811|660|1249750028|850|0|0|0|0|3232238116|7164|63165|54451330|5|35655|862
2|1249689739|340|1249776215|500|0|0|0|0|3232238268|19596|431104|46979061|4|4346|108
2|1249715873|140|1249776214|360|0|0|0|0|3232238190|21631|217804|36213895|3|4801|166
2|1249717604|920|1249737083|700|0|0|0|0|3232238236|16578|469766|31285035|24|12848|66

itt a byte -ok szépen szerepelnek, csak az ip címekkel van gondom (csak a cím és a byte kell az egészből)
a címeket "IP addresses are printed as 4 consecutive 32bit numbers" formában írja ki.
A fenti példában a 192.168.10.200 -at 3232238280-nak jeleníti meg.
kérdésem, hogyan lehet visszafejteni, hogy a 323... ból megkapjam a kívánt ip címet.
a 32 bites számot hogyan lehet bash -ban 4 db nyolcbitesre felosztani

köszi

Hozzászólások

Ha csak a forráscím és a Bytes mező kell:

nfdump -o "fmt:%sa %byt"

És akkor nem kell tovább bash-al formázgatni.

Hint: Custom output format: -o fmt:..


echo $(( ( 3232238280 & ( 2**32 - 2**24 ) ) >> 24 )) # 192
echo $(( ( 3232238280 & ( 2**24 - 2**16 ) ) >> 16 )) # 168
echo $(( ( 3232238280 & ( 2**16 - 2**8  ) ) >>  8 )) # 10
echo $(( ( 3232238280 & ( 2**8  - 2**0  ) ) >>  0 )) # 200

Ezen jocskan lehet meg egyszerusiteni (">> 0", "2**0", zarojelek), csak azert irtam igy, hogy latszodjon a logikaja (kimaszkoljuk a megfelelo byte-ot es shifteljuk a legkisebb helyiertekre).