у меня есть массив списков ip
ip_array=['192.168.1.100' '192.168.1.101' '192.168.1.102' '192.168.1.103' '192.168.1.104' '192.168.1.105' '192.168.1.106' '192.168.1.107' '192.168.1.108' '192.168.1.109' '192.168.1.110']
Я хочу запустить вывод iptables для ip_array и получить результаты.
* например 1004 *
pkts bytes target prot opt in out source destination
83276 4337105 RETURN 0 -- * * 192.168.1.106 0.0.0.0/0
166008 230477883 RETURN 0 -- * * 0.0.0.0/0 192.168.1.106
0 0 RETURN 0 -- * * 192.168.1.107 0.0.0.0/0
0 0 RETURN 0 -- * * 0.0.0.0/0 192.168.1.107
0 0 RETURN 0 -- * * 192.168.1.103 0.0.0.0/0
0 0 RETURN 0 -- * * 0.0.0.0/0 192.168.1.103
99 9144 RETURN 0 -- * * 192.168.1.102 0.0.0.0/0
79 11590 RETURN 0 -- * * 0.0.0.0/0 192.168.1.102
0 0 RETURN 0 -- * * 192.168.1.101 0.0.0.0/0
0 0 RETURN 0 -- * * 0.0.0.0/0 192.168.1.101
994874 51992106 RETURN 0 -- * * 192.168.1.100 0.0.0.0/0
2398169 3594009427 RETURN 0 -- * * 0.0.0.0/0 192.168.1.100
0 0 RETURN 0 -- * * 192.168.1.106 0.0.0.0/0
0 0 RETURN 0 -- * * 0.0.0.0/0 192.168.1.106
из моего предыдущего поста я узнал, что могу получить информацию байтов, используя awk
iptables -L RRDIPT -vnx -t filter |awk '!/destination/{a[$9]+=$2}END{for(item in a){total+=a[item];dl[item]=a[item];printf item"-"a[item]}}'
но так как IP-адрес постоянно меняется, я хочу, чтобы мой вывод был в том же формате.
i.e bytesof 192.168.1.100, bytesof 192.168.1.102, bytesof 192.168.1.103, bytesof 192.168.1.104.......bytesof 192.168.1.110
Я хотел бы увидеть вывод ниже
[3594009427,0,11590,0,0,0,230477883,0,0,0,0]
Я пытался использовать массивы
iptables -L RRDIPT -vnx -t filter |awk '!/destination/{a[$9]+=$2}END{for(item in a){if(item==ip_array[i]){dl[i]=a[item];printf dl[i];}else{dl[i]=0}i+=i;}}'
Я объявил dl
глобальным массивом, но не могу получить доступ к значениям, например, dl[0]
для дальнейшей обработки.
Может кто-нибудь помочь?