diff --git a/utils/check_mid.py b/utils/check_mid.py new file mode 100755 index 00000000..9c27276c --- /dev/null +++ b/utils/check_mid.py @@ -0,0 +1,61 @@ +#!/usr/bin/env python +# -*- encoding: utf-8 -*- +# +# CHECK_MID.PY -- Vérification et application de la correspondance mid <-> IP +# +# Copyright (c) 2010 Nicolas Dandrimont +# Authors: Nicolas Dandrimont +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +import sys +sys.path.append('/usr/scripts/gestion') + +from midtools import Mid +from ldap_crans import crans_ldap + +from optparse import OptionParser + +def check_mid(normalize): + """Vérifie que les mid correspondent bien aux IP. + + Si normalize = True, modifie la base pour que la correspondance + soit bien vérifiée""" + cl = crans_ldap() + + counter = 0 + s = cl.search("ipHostNumber=*") + for m in s["machine"]: + counter += 1 + mid = int(m.id()) + ip = m.ip() + try: + mid_t = Mid(ipv4=ip) + except ValueError, e: + print e + else: + if mid != int(mid_t): + print "%s: %s!=%s" % (m.Nom(), mid, int(mid_t)) + if normalize: + m.conn.rename_s(m.dn, "%s=%d" % (m.idn, mid_t)) + print counter + +if __name__ == "__main__": + parser = OptionParser() + parser.set_defaults(normalize=False) + parser.add_option("-n", "--normalize", action="store_true", help="Modifie les mid pour les faire conformer au schema") + + (options, args) = parser.parse_args() + + check_mid(options.normalize)