add total bytes in iptables
Question
how can I add grep output number line by line.
I have the below output file from
pkts bytes target prot opt in out source destination
0 0 RETURN 0 -- * * 0.0.0.0/0 192.168.1.117
0 0 RETURN 0 -- * * 192.168.0.1 0.0.0.0/0
0 0 RETURN 0 -- * * 0.0.0.0/0 192.168.0.1
375993 19581223 RETURN 0 -- * * 192.168.1.136 0.0.0.0/0
752537 1043650417 RETURN 0 -- * * 0.0.0.0/0 192.168.1.136
123 9348 RETURN 0 -- * * 192.168.1.100 0.0.0.0/0
121 9196 RETURN 0 -- * * 0.0.0.0/0 192.168.1.100
I want to add all bytes for each IP address and store it as variable for further calculation.
iptables -L RRDIPT -vnx -t filter | grep "192.168.1" | cut -d " " -f4
gives me the blanks and 19581223,1043650417,9348 and 9196 but I am struggling to add the output.
Can anyone guide me?
Solution
The following script tallies up the byte counts per destination IP. If you want per source IP then change the $9
to $8
iptables -L ... | awk '!/destination/{a[$9]+=$2}END{for(item in a)printf("%s\tTotal bytes: %s\n",item,a[item])}'
Input
pkts bytes target prot opt in out source destination
0 1 RETURN 0 -- * * 0.0.0.0/0 192.168.1.117
0 2 RETURN 0 -- * * 192.168.0.1 0.0.0.0/0
0 3 RETURN 0 -- * * 0.0.0.0/0 192.168.0.1
0 4 RETURN 0 -- * * 0.0.0.0/0 192.168.1.117
0 5 RETURN 0 -- * * 192.168.0.1 0.0.0.0/0
0 6 RETURN 0 -- * * 0.0.0.0/0 192.168.1.117
0 7 RETURN 0 -- * * 192.168.0.1 0.0.0.0/0
Output
192.168.0.1 Total bytes: 3
0.0.0.0/0 Total bytes: 14
192.168.1.117 Total bytes: 11
OTHER TIPS
awk
will make short work of that.
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow