История изменений
Исправление 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. сорри, я к джедаям не отношусь.