[crans_utils, lc_ldap] Méthode pour récupérer les machines ldap correspondant à la machine physique locale

This commit is contained in:
Valentin Samir 2014-03-18 22:45:42 +01:00
parent d6d9f84076
commit 067459eb44
3 changed files with 25 additions and 4 deletions

View file

@ -45,6 +45,7 @@ sys.path.append('/usr/scripts/gestion')
import config
from unicodedata import normalize
import subprocess
from netifaces import interfaces, ifaddresses, AF_INET
DEVNULL = open(os.devnull, 'w')
@ -292,3 +293,14 @@ def fetch_cert_info(x509):
for ext in x509.get_extensions():
do_ext(data, ext)
return data
def ip4_addresses():
"""Renvois la liste des ipv4 de la machine physique courante"""
ip_list = []
for interface in interfaces():
if interface!='lo' and AF_INET in ifaddresses(interface).keys():
for link in ifaddresses(interface)[AF_INET]:
ip_list.append(link['addr'])
return ip_list

View file

@ -553,3 +553,13 @@ class lc_ldap(ldap.ldapobject.LDAPObject, object):
return [attributs.soi]
else:
return []
def get_local_machines(self, mode='ro'):
filter=""
for ip in set(crans_utils.ip4_addresses()):
filter+=u'(ipHostNumber=%s)' % ip
filter = u"(|%s)" % filter
return self.search(filter, mode=mode)

View file

@ -34,7 +34,6 @@ current_user = os.getenv("SUDO_USER") or os.getenv("USER") or os.getenv("LOGNAME
if isinstance(current_user, str):
current_user = current_user.decode("utf-8")
def lc_ldap(*args, **kwargs):
"""Renvoie une connexion à la base LDAP."""
return module_qui_a_le_meme_nom_que_sa_classe_principale.lc_ldap(*args, **kwargs)