collisions_ipv6: stop reporting useless stuff
Ie on filtre sur nos cidr, et éventuellement sur le lien local, mais on laisse tomber les trucs comme ::1 que crachent parfois certains noyaux linux (sic).
This commit is contained in:
parent
93f369eab1
commit
8147952551
1 changed files with 15 additions and 3 deletions
|
@ -1,12 +1,23 @@
|
||||||
#!/usr/bin/env python
|
#!/bin/bash /usr/scripts/python.sh
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
""" Pour détecter et signaler les collisions d'adresses IPv6 """
|
""" Pour détecter et signaler les collisions d'adresses IPv6 """
|
||||||
|
|
||||||
import psycopg2
|
import psycopg2
|
||||||
import sys
|
import sys
|
||||||
sys.path.append('/usr/scripts')
|
import netaddr
|
||||||
|
import itertools
|
||||||
import gestion.ipt as ipt
|
import gestion.ipt as ipt
|
||||||
|
from gestion.config import prefix as crans_prefixes
|
||||||
|
|
||||||
|
## Construit un filtre sql succint des réseaux à vérifier
|
||||||
|
|
||||||
|
# (crans_prefixes est un dictionnaire de listes de networks, mais on se fout des
|
||||||
|
# clés, donc on concatène méchamment)
|
||||||
|
prefixes = itertools.chain(['fe80::/64'], *crans_prefixes.values())
|
||||||
|
# Et on ne garde que le plus utile (histoire de faire moins de tests plus tard)
|
||||||
|
prefixes = netaddr.cidr_merge(prefixes)
|
||||||
|
prefixes = " OR \n".join( "a.ip <<= inet '%s'" % str(cidr) for cidr in prefixes)
|
||||||
|
|
||||||
# Connection à la base sql via pgsql
|
# Connection à la base sql via pgsql
|
||||||
pgsql = psycopg2.connect(database='filtrage', user='crans')
|
pgsql = psycopg2.connect(database='filtrage', user='crans')
|
||||||
|
@ -20,10 +31,11 @@ collision_mac_ip_request = """SELECT DISTINCT
|
||||||
b.date as date2, b.mac as mac2, b.ip as ip2
|
b.date as date2, b.mac as mac2, b.ip as ip2
|
||||||
FROM mac_ip as a, mac_ip as b
|
FROM mac_ip as a, mac_ip as b
|
||||||
WHERE a.ip = b.ip AND
|
WHERE a.ip = b.ip AND
|
||||||
|
(%s) AND
|
||||||
a.mac != b.mac AND
|
a.mac != b.mac AND
|
||||||
a.date >= b.date AND
|
a.date >= b.date AND
|
||||||
a.date - b.date < interval '3 day'
|
a.date - b.date < interval '3 day'
|
||||||
ORDER BY a.date;"""
|
ORDER BY a.date;""" % prefixes
|
||||||
curseur.execute(collision_mac_ip_request)
|
curseur.execute(collision_mac_ip_request)
|
||||||
collision_mac_ip = curseur.fetchall()
|
collision_mac_ip = curseur.fetchall()
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue