Commit 8c41ce5a authored by Pierre-Elliott Bécue's avatar Pierre-Elliott Bécue

Ajout d'une macro pour faire une recherche bourrine

 * whos -w ruoska recherche à la sauvage ruoska contre plein d'attributs
 * Attention, ça wildcarde à la fin
parent 39444410
......@@ -33,6 +33,9 @@ def explore_db(args):
dataLen = sum([len(elem) for elem in data.itervalues()])
if dataLen:
for (key, elem) in data.iteritems():
if len(elem) == 0:
continue
_header = affichage.style(u"Résultats de type %s trouvés dans la base." % (key,), ['cyan'])
print _header.encode(ENCODING)
if len(elem) == 1:
......@@ -58,6 +61,8 @@ def search_ldap(args):
if args.macro_filtre:
search_filter = filter_macro(search_filter)
elif args.wild:
search_filter = wild_search_filter(search_filter)
try:
resultats = LDAP.search(search_filter, sizelimit=args.limite)
......@@ -119,6 +124,23 @@ def filter_macro(filtre):
return filtre
def wild_search_filter(filtre):
"""Recherche sur un gros volume d'attributs dans la base de données"""
kw = filtre[1:-1]
attr_list = [
u'nom', u'prenom', u'tel', u'mail', u'chbre', u'mailAlias', u'canonicalAlias', u'mailExt', u'uid',
u'macAddress', u'host', u'hostAlias', u'ipHostNumber', u'ip6HostNumber',
]
filtre = u"(|"
for elem in attr_list:
filtre += u"(%s=%s*)" % (elem, kw)
filtre += u")"
return filtre
def limits(data, args):
"""Applique les limitations dans la recherche.
Les cas sont a priori conflictuels.
......@@ -172,7 +194,6 @@ if __name__ == "__main__":
parser = argparse.ArgumentParser(description="Recherche dans la base des adhérents", add_help=False)
parser.add_argument('-A', '--adresse', help="Affiche l'adresse de l'adhérent.", action="store_true")
parser.add_argument('-d', '--blacklist', type=int, help="Choix du nombre d'entrées blacklist à afficher pour les entrées détaillées.", action="store", default=10)
parser.add_argument('-f', '--macro_filtre', help="Flag activant la gestion des macros pour le filtre LDAP.", action="store_true")
parser.add_argument('-h', '--help', help="Affiche ce message et quitte.", action="store_true")
parser.add_argument('-i', '--ipsec', help="Affichage de la clef wifi de la machine.", action="store_true")
parser.add_argument('-l', '--limite', type=int, help="Modifier la taille limite de recherche dans la base LDAP", action="store", default=1000)
......@@ -184,6 +205,10 @@ if __name__ == "__main__":
parser.add_argument('-v', '--verbose', help="Rend le script (très) verbeux.", action="store_true")
parser.add_argument('filtre', type=str, nargs="?", help="Le filtre whos à utiliser")
macro_group = parser.add_mutually_exclusive_group(required=False)
macro_group.add_argument('-f', '--macro_filtre', help="Flag activant la gestion des macros pour le filtre LDAP.", action="store_true")
macro_group.add_argument('-w', '--wild', help="Cherche de façon agressive dans la base de données à partir du filtre", action="store_true")
type_group = parser.add_mutually_exclusive_group(required=False)
type_group.add_argument('-a', '--adherent', help="Limite l'affichage aux adhérents.", action="store_true")
type_group.add_argument('--adm', help="Limite l'affichage aux machines adm.", action="store_true")
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment