Отличная тема, к тому же все время попадается в поиске Гугла, если искать что-то типа "подсчет трафика Ubuntu". Имею проблемы при запуске скрипта на питоне, поскольку совершенно не программист:
Traceback (most recent call last):
File "./calc.py", line 21, in <module>
down = int(arByte[i + 1])
IndexError: list index out of range[/i]
Об этом вопрошали чуть выше, но ответа нет. Насколько я понимаю, скрипт выбирает из стандартного вывода все строчки с вхождениями типа "ip-адрес" + "байты ACCEPT". Вышеприведенная ругань видимо означает, что данных нет, хотя вывод не пуст:
171 42017 ACCEPT all -- br0 * 192.168.0.3 0.0.0.0/0
190 44828 ACCEPT all -- * br0 0.0.0.0/0 192.168.0.3
Не могу понять, куда копать.
К вопросу не относится: чтобы попусту не засорять топик, позволю себе подкинуть пару рабочих идей (не автору темы, поскольку он видимо человек шарящий):
При желании заниматься фильтрацией трафика, к примеру, по портам, структура iptables должна будет иметь более замороченный вид. Если в данном примере дописать что-то типа
iptables -A INPUT -s 192.168.0.0/24 -p tcp --dport 80 -j ACCEPT,
т.е. открыть локальный 80 порт для веб-сервера, скрипт видимо будет выбирать ненужные в данном случае строчки из вывода команды iptables -L -xnv:
Chain INPUT (policy DROP 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
2 345 ACCEPT tcp -- * * 192.168.0.0/24 192.168.0.1 tcp dpt:80
Дальше - больше, и подходящих вхождений может быть много. Поэтому есть минимум два вывода: строчку
cmd = 'iptables -L -vnx'
заменить на cmd = 'iptables -L FORWARD -vnx',
а в самой цепочке FORWARD не использовать других конструкций с директивой ACCEPT.