#regex #ansible #ldap
Вопрос:
здравствуйте, я получаю этот результат после ldpa_search
{ "msg": { "changed": false, "failed": false, "results": [ { "cn": "workagfa", "uniquemember": [ "uid=gp2513,ou=user,O=agfa,C=com", "uid=as2179,ou=user,O=agfa,C=com", "uid=mh1382,ou=user,O=agfa,C=com", .......
это способ извлечь только жидкость
например, используйте регулярное выражение
uid=([-d]*[^;])
и создать такой факт, как этот
((uid=gp2513),(uid=as2179),(uid=mh1382))
это используется для добавления фильтра в запрос ldap
большое спасибо
Ответ №1:
вы могли бы сделать что-то вроде этого:
tasks: - name: something : get the extract of ldap register: output - name: extract uids set_fact: uids: "{{ uids | default([]) [item.split(',')[0]] }}" loop: "{{ ouput.results.0.uniquemember.0 }}" - name: display uids debug: var: uids
Комментарии:
1. я получаю « «Неверные данные, переданные в «цикл», для этого требуется список, вместо этого я получил следующее: uid=gp2513,ou=пользователь,O=agfa,C=com. Подсказка: Если вы передали список/дикт только одного элемента, попробуйте добавить wantlist=True в вызов поиска или используйте q/query вместо поиска.» «
2. я ответил, следуя отображаемой вами структуре, я протестировал и все в порядке . это означает, что ваша структура отличается от той, которую вы показываете
3. да, извините, я сейчас использую ldap_groups.results.0.uniquemember для цикла и работает. большое спасибо