#!/usr/bin/env python # -*- coding: utf-8 -*- # Compteur des règles iptables import sys,commands,string # On prend l'argument pour définir la table à analyser TABLE = sys.argv[0].split('_')[1] if TABLE : IPTABLES = "iptables -n -t %s -L " % TABLE else : IPTABLES = "iptables -n -L " try : arg = sys.argv[1] except : arg = '' CHAINS = commands.getoutput('%s | grep Chain | awk \'{print $2}\'' % IPTABLES).split('\n') def name_of_chain(chain): """Identifiant munin de la chaine""" return string.lower(chain.replace('_', '').replace('-', '').replace('.','').replace('/', '')) def label_of_chain(chain): """Label affiché sur le graphe""" return chain.replace('_', '-').replace('.','-').replace('/','-') if arg == "config" : print 'graph_title Firewall %s' % string.lower(TABLE) print 'graph_args --base 1000 --lower-limit 0' print 'graph_category network' print "graph_vlabel nb de regles" for chain in CHAINS : nom = name_of_chain(chain) label = label_of_chain(chain) print "%s.label %s" % (nom, label) print "%s.draw AREASTACK" % nom if (label,TABLE) == ("TEST-MAC-IP",'filter'): print "%s.warning 8:12" % nom print "%s.critical 1:20" % nom else : for chain in CHAINS : nom = name_of_chain(chain) label = label_of_chain(chain) # On retire 2 pour les entêtes value = int(commands.getoutput('%s %s | wc -l' % (IPTABLES, chain))) - 2 print "%s.value %d" % (nom, value)