поддающийся извлечению идентификатор uid формирует ldap_search и используется для создания фильтра ldap

#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 для цикла и работает. большое спасибо