LINUX.ORG.RU

История изменений

Исправление upcFrost, (текущая версия) :

UPD: все написанное актуально если юзеров много и руками их поменять мягко говоря тухло (скажем 3к юзеров уже не очень весело)

У меня cn особо не используется, оно у вас, получается, составное?

ну да. в любом случае для корректной работы такой связки нужно одно поле где будет составное имя.

Подскажите, как?

ну, ладно, про три команды я чуть поспешил... есть несколько вариантов, ключевое слово - RegExp.

если есть ldif - еще проще, не надо прыгать с ldapsearch. если нет - вот пример если у нас уже есть директория, но cn в ней пустые и у юзеров не заданы.

ldapsearch -LLL -W -D cn=Manager,dc=test,dc=com -b cn=users,dc=test,dc=com -s one uid=* givenName sN |
awk 'BEGIN{i=1}{line[i++]=$0}END{j=1; while (j < i) {print line[j] ";" line[j+2] line[j+1]; j+=4}}' | 
sed 's/sn: //' | 
sed 's/givenName://' | 
sed 's/\(.*\);\(.*\)/\1\nchangetype: modify\nadd: cn\ncn: \2\n/'

эта штука ищет всх юзеров в cn=users,dc=test,dc=com, выводит мне их uid, имя и фамилию в 3 строки плюс пустая, переводит их в формат uid;sN givenName, после чего юзая точку с запятой как разделитель в 3 sed'a создает из них вот такую структуру:

dn: cn=vasya pupkin,cn=users,dc=test,dc=com
changetype: modify
add: cn
cn: pupkin vasya

эту структуру можно скормить ldapmodify.

общего решения хз есть ли, но составить регулярку на нужную схему дело минут 20-30 если каждый день этим не заниматься. ну или у нас тут есть regex-джедаи, можно их кастануть.

и да, в меня сейчас полетят тухлые помидоры за 3 sed вместо запихивания всего в один awk. сорри, я к джедаям не отношусь.

Исправление upcFrost, :

все написанное актуально если юзеров много и руками их поменять мягко говоря тухло (скажем 3к юзеров уже не очень весело)

У меня cn особо не используется, оно у вас, получается, составное?

ну да. в любом случае для корректной работы такой связки нужно одно поле где будет составное имя.

Подскажите, как?

ну, ладно, про три команды я чуть поспешил... есть несколько вариантов, ключевое слово - RegExp.

если есть ldif - еще проще, не надо прыгать с ldapsearch. если нет - вот пример если у нас уже есть директория, но cn в ней пустые и у юзеров не заданы.

ldapsearch -LLL -W -D cn=Manager,dc=test,dc=com -b cn=users,dc=test,dc=com -s one uid=* givenName sN |
awk 'BEGIN{i=1}{line[i++]=$0}END{j=1; while (j < i) {print line[j] ";" line[j+2] line[j+1]; j+=4}}' | 
sed 's/sn: //' | 
sed 's/givenName://' | 
sed 's/\(.*\);\(.*\)/\1\nchangetype: modify\nadd: cn\ncn: \2\n/'

эта штука ищет всх юзеров в cn=users,dc=test,dc=com, выводит мне их uid, имя и фамилию в 3 строки плюс пустая, переводит их в формат uid;sN givenName, после чего юзая точку с запятой как разделитель в 3 sed'a создает из них вот такую структуру:

dn: cn=vasya pupkin,cn=users,dc=test,dc=com
changetype: modify
add: cn
cn: pupkin vasya

эту структуру можно скормить ldapmodify.

общего решения хз есть ли, но составить регулярку на нужную схему дело минут 20-30 если каждый день этим не заниматься. ну или у нас тут есть regex-джедаи, можно их кастануть.

и да, в меня сейчас полетят тухлые помидоры за 3 sed вместо запихивания всего в один awk. сорри, я к джедаям не отношусь.

Исходная версия upcFrost, :

У меня cn особо не используется, оно у вас, получается, составное?

ну да. в любом случае для корректной работы такой связки нужно одно поле где будет составное имя.

Подскажите, как?

ну, ладно, про три команды я чуть поспешил... есть несколько вариантов, ключевое слово - RegExp.

если есть ldif - еще проще, не надо прыгать с ldapsearch. если нет - вот пример если у нас уже есть директория, но cn в ней пустые и у юзеров не заданы.

ldapsearch -LLL -W -D cn=Manager,dc=test,dc=com -b cn=users,dc=test,dc=com -s one uid=* givenName sN |
awk 'BEGIN{i=1}{line[i++]=$0}END{j=1; while (j < i) {print line[j] ";" line[j+2] line[j+1]; j+=4}}' | 
sed 's/sn: //' | 
sed 's/givenName://' | 
sed 's/\(.*\);\(.*\)/\1\nchangetype: modify\nadd: cn\ncn: \2\n/'

эта штука ищет всх юзеров в cn=users,dc=test,dc=com, выводит мне их uid, имя и фамилию в 3 строки плюс пустая, переводит их в формат uid;sN givenName, после чего юзая точку с запятой как разделитель в 3 sed'a создает из них вот такую структуру:

dn: cn=vasya pupkin,cn=users,dc=test,dc=com
changetype: modify
add: cn
cn: pupkin vasya

эту структуру можно скормить ldapmodify.

общего решения хз есть ли, но составить регулярку на нужную схему дело минут 20-30 если каждый день этим не заниматься. ну или у нас тут есть regex-джедаи, можно их кастануть.

и да, в меня сейчас полетят тухлые помидоры за 3 sed вместо запихивания всего в один awk. сорри, я к джедаям не отношусь.