Как массово заменить атрибут "Home Directory"?

Обсуждение технических вопросов по продуктам Novell

Как массово заменить атрибут "Home Directory"?

Сообщение Константин Ошмян » 01 окт 2003, 20:46

Добрый день!

Намечается тут у нас переезд домашних директорий пользователей на другой сервер (и, соответственно, на другой том). А поскольку в логин-скрипте маппинг завязан на соответствующий атрибут пользователя (команда "map root Q:="%HOME_DIRECTORY"), то встаёт вопрос: а как этот атрибут разом у всех пользователей поменять? Причём поменять-то надо как бы не весь атрибут целиком, а только его половину - ту часть, которая ссылается на том; а вторую часть (путь на этом томе) надо оставить прежней. Проблема ещё и в том, что имя домашней директории не всегда совпадает с именем пользователя. Пользователей таких - порядка 250, руками перебивать тоскливо. :(
Сеть на базе серверов NetWare 5.1 (присутствуют также несколько 4.11 в том же дереве). Что-то я даже растерялся... Может, кто-нибудь что присоветует?
--
Заранее спасибо.
Аватара пользователя
Константин Ошмян
 
Сообщения: 961
Зарегистрирован: 13 авг 2002, 21:36
Откуда: Рига

Сообщение Косинов Владимир » 02 окт 2003, 04:05

Экспортируешь из дерева с помощью С1 данные: выбираешь objectclass = user, налагаешь фильтр - экспортировать только поле ndsHomeDirectory, получаешь файлик с содержимым следующего вида:

dn: cn=Vasya,o=MMM
changetype: add
ndsHomeDirectory: cn=SEREVR1_HOME,ou=Servers,o=MMM#0#Home\Pupkin

в Word`е автозаменой меняешь

changetype: add
ndsHomeDirectory: cn=SEREVER1_HOME,ou=Servers,o=MMM
на
changetype: modify
replace:ndsHomeDirectory
ndsHomeDirectory: cn=SEREVER2_DATA,o=MMM

получаешь

dn: cn=Vasya,o=MMM
changetype: modify
replace:ndsHomeDirectory
ndsHomeDirectory: cn=SEREVER2_DATA,o=MMM#0#Home\Pupkin

Получавшийся файлик импортируешь обратно в дерево. Все.
Аватара пользователя
Косинов Владимир
 
Сообщения: 166
Зарегистрирован: 07 июн 2002, 11:16
Откуда: Красноярск

Re: SETHOME2

Сообщение Сергей Дубров » 02 окт 2003, 06:29

Константин Ошмян писал(а):Проблема ещё и в том, что имя домашней директории не всегда совпадает с именем пользователя. Может, кто-нибудь что присоветует?

Не буду оригинальным - SETHOME из JRB utilities:

Sethome2-W32 v1.70:
Creates or deletes "Home Directory" attributes or bindery HOME_DIR properties for multiple users. Under NDS, sethome2 may also set or delete each user's default server.
Аватара пользователя
Сергей Дубров
 
Сообщения: 2072
Зарегистрирован: 05 июн 2002, 06:07
Откуда: Новосибирск, ин-т ядерной физики СО РАН

Сообщение Константин Ошмян » 02 окт 2003, 18:54

Сергей Дубров писал(а):Не буду оригинальным - SETHOME из JRB utilities
Я тоже предполагал, что из этих утилит что-то может помочь - но увы, там надо в явном виде указывать для каждого пользователя его домашнюю директорию, да и запускать надо по разу для каждого пользователя... Т.е. помочь она может лишь в том случае, когда уже есть готовый список всех пользователей с их домашними директориями - чтобы из этого списка сделать BAT-файл с запуском SETHOME2 (по разу на каждого)...

А вот с экспорт/импортом - работает ОК. Правда, в штатную ConsoleOne (которая входит в NetWare 5.1) этот экспорт/импорт не включен (почему я и растерялся-то, помню же что в шестёрке было!), но ничего не мешает запустить C1 со стоящего под столом лабораторного сервера с NetWare 6 :D и подключиться к своему дереву. Главное - чтобы хоть на одном из серверов LDAP был поднят.

Кстати, почему-то в пятёрочном дереве этот атрибут через LDAP отдаётся с именем homeDirectory, тогда как в шестёрочном - ndsHomeDirectory, как и указывал Владимир. И ещё - довольно удобно, что (зная синтаксис LDAP-запросов, естественно) можно заэкспортировать не всё подряд, а только то, что надо (например, только пользователей, у которых нужное свойство вообще определено).

Сергей, Владимир - большое спасибо!
Аватара пользователя
Константин Ошмян
 
Сообщения: 961
Зарегистрирован: 13 авг 2002, 21:36
Откуда: Рига

Сообщение Сергей Дубров » 03 окт 2003, 06:39

Константин Ошмян писал(а):
Сергей Дубров писал(а):Не буду оригинальным - SETHOME из JRB utilities
Я тоже предполагал, что из этих утилит что-то может помочь - но увы, там надо в явном виде указывать для каждого пользователя его домашнюю директорию, да и запускать надо по разу для каждого пользователя...

Не, она wildcards-ы вполне успешно понимает. Я как раз с её помощью кучу народа в своё время переносил с сервера на сервер, одной строкой поменял им все homedir-ы:

sethome2 *.NKO .NKOS_DATA.NKO.BINP:USER /B

Константин Ошмян писал(а):Т.е. помочь она может лишь в том случае, когда уже есть готовый список всех пользователей с их домашними директориями - чтобы из этого списка сделать BAT-файл с запуском SETHOME2 (по разу на каждого)...

И список создать не проблема - есть парная утилита CHKHOME.EXE (CHKHOME *.NKO - выдаст список всех homedir для пользователей контейнера NKO).


Константин Ошмян писал(а):Правда, в штатную ConsoleOne (которая входит в NetWare 5.1) этот экспорт/импорт не включен.

Интересно, а почему? Может снапин какой скопировать из шестёрки?
Аватара пользователя
Сергей Дубров
 
Сообщения: 2072
Зарегистрирован: 05 июн 2002, 06:07
Откуда: Новосибирск, ин-т ядерной физики СО РАН

Сообщение Андрей Тр. aka RH » 03 окт 2003, 07:13

А еще есть HOMES, на который я тут то и дело ссылаюсь.

А вот с экспорт/импортом - работает ОК. Правда, в штатную ConsoleOne (которая входит в NetWare 5.1) этот экспорт/импорт не включен

Не знаю, не знаю .. у меня на 5.1 пожалста - Wizards | NDS Import / Export ;) с eDir 8.7 .. С1 сама что ни не есть "штатная" 1.3.5.
Даешь отдельный раздел по ZENworks ... :bad-words: .. и печати !
Аватара пользователя
Андрей Тр. aka RH
 
Сообщения: 3937
Зарегистрирован: 18 июн 2002, 11:27

Сообщение Сергей Каретин » 03 окт 2003, 09:12

Андрей Тр. aka RH писал(а):Не знаю, не знаю .. у меня на 5.1 пожалста - Wizards | NDS Import / Export ;) с eDir 8.7 .. С1 сама что ни не есть "штатная" 1.3.5.


Все правильно, такая возможность штатно появилась в eDir.
Сергей Каретин
 
Сообщения: 201
Зарегистрирован: 05 июн 2002, 08:21
Откуда: Ярославль

Сообщение Андрей Тр. aka RH » 03 окт 2003, 09:29

Сергей Каретин писал(а):
Андрей Тр. aka RH писал(а):Не знаю, не знаю .. у меня на 5.1 .. ;) с eDir 8.7
Все правильно, такая возможность штатно появилась в eDir.
Ну да, это просто был намек такой :P
Даешь отдельный раздел по ZENworks ... :bad-words: .. и печати !
Аватара пользователя
Андрей Тр. aka RH
 
Сообщения: 3937
Зарегистрирован: 18 июн 2002, 11:27

Сообщение Константин Ошмян » 03 окт 2003, 13:35

Сергей Дубров писал(а):
Константин Ошмян писал(а):Я тоже предполагал, что из этих утилит что-то может помочь - но увы, там надо в явном виде указывать для каждого пользователя его домашнюю директорию, да и запускать надо по разу для каждого пользователя...

Не, она wildcards-ы вполне успешно понимает. Я как раз с её помощью кучу народа в своё время переносил с сервера на сервер, одной строкой поменял им все homedir-ы:

sethome2 *.NKO .NKOS_DATA.NKO.BINP:USER /B
Дык, это в том случае, когда имя директории совпадает с именем пользователя. А у нас такое не всегда, поэтому такое "не прокатит". :(
То же самое и относительно упоминавшегося Андреем Homes. :(
Сергей Дубров писал(а):И список создать не проблема - есть парная утилита CHKHOME.EXE (CHKHOME *.NKO - выдаст список всех homedir для пользователей контейнера NKO).
Это я тоже пробовал - и, к сожалению, безуспешно:
Код: Выделить всё
0 Users checked
А на явное указание пользователя вместе с контекстом:
Код: Выделить всё
CHKHOME: No such user or group ИмяСервера/УказанныйЮзер.Контекст
Похоже, что оно только Bindery понимает (как в хелпе к нему и написано). По крайней мере, это тот CHKHOME.EXE, который входит в бесплатно доступный комплект "А".

Мне почему-то казалось, что пройтись по всем пользователям в дереве и поменять в их свойствах один том на другой (не трогая пути) - достаточно простая задача, и должны были бы быть какие-то утилиты для этого. Оказывается - нету. :? Тогда хотя бы пройтись по всем пользователям и составить список, после простейшей обработки которого его можно было бы "скормить" какой-нибудь утилите вроде SETHOME2. Но и тут - максимум, что стандартными средствами можно сделать - так это
Код: Выделить всё
NLIST.EXE USER SHOW "Home Directory" /CO="контекст" /S /C
с переназначением вывода в файл. Но результат - мягко говоря, трудноватый для обработки (много лишнего).

В общем, на данный момент для нас наилучшее из опробованных решений - это через NDS Export/Import (проверено, работает 8) ). Хотя у этого решения довольно много требований - в частности, наличие работающего LDAP-сервера и хотя бы где-то установленного eDirectory. :?

Ещё раз - всем большое спасибо! :)
Аватара пользователя
Константин Ошмян
 
Сообщения: 961
Зарегистрирован: 13 авг 2002, 21:36
Откуда: Рига

Сообщение Андрей Тр. aka RH » 03 окт 2003, 14:45

"Дык, это в том случае, когда имя директории совпадает с именем пользователя. А у нас такое не всегда, поэтому такое "не прокатит".
То же самое и относительно упоминавшегося Андреем Homes."


Точно что ли ? Просто у нас атрибут homedirectory как раз не совпадает с именем пользователя ( т.к. он используется для других целей, а не маппирования домашнего каталога ). По-моему, как раз homes и пользовались в том числе и для его задания .. хотя не уверен сейчас, надо будет проверить, какова там схема работы. Возможно, атрибуты и вправду устанавливались импортированием предварительно сформированного ldif-файла. А изменить сервер, не трогая при этом пути, ИМХО действительно не получится - т.к. хранятся они в одном атрибуте, как мне кажется.
Даешь отдельный раздел по ZENworks ... :bad-words: .. и печати !
Аватара пользователя
Андрей Тр. aka RH
 
Сообщения: 3937
Зарегистрирован: 18 июн 2002, 11:27

Небольшое дополнение

Сообщение Константин Ошмян » 06 июл 2004, 19:38

Недавно пришлось повторять эту процедуру (домашние директории переехали ещё раз), поэтому некоторые дополнения.

Во-первых, спасибо всем высказавшим своё мнение, особенно - Владимиру Косинову, советом которого я и пользовался оба раза. (NDS Import-Export я запускал из ConsoleOne с лабораторного сервера NetWare6SP3, поэтому дальнейшие замечания относятся именно к этой версии)

Во-вторых, обнаружился небольшой глюк (в первый раз он мне показался случайностью, со второго раза найдена закономерность). Действительно, в экспорт-файле домашние директории имеют вид:

cn=SEREVR1_HOME,ou=Servers,o=MMM#0#Home\Pupkin

Однако, если имя самой директории начинается с двух букв, каждая из которых в диапазоне от A до F, то при последующем импорте они вместе с предшествующим им символом обратной косой черты воспринимаются как HEX-цифры, в результате чего после импорта эти имена оказываются "покорёженными" (причём ещё и с какими-то "хвостами" в конце). Обойти это мне так и не удалось: описанное в стандарте (RFC2253) экранирование путём удвоения обратной косой черты приводит к тому, что и импортируется именно удвоенная косая, а прочие манипуляции (вроде "\5C") косую черту импортируют правильно, но "хвост" в конце добавляется всё равно. :(

Пришлось после импорта потом просто некоторых пользователей поправить вручную.

В-третьих, сэкпортировать только то, что надо, мне тоже не удалось. Поскольку меня интересовали только пользователи, у которых домашняя директория прописана, причём эта домашняя директория находится именно в указанном месте, то все остальные мне не были нужны. Однако составленный по всем правилам (RFC2254) фильтр

(&(objectclass=user)(homeDirectory=cn=SEREVR1_HOME,ou=Servers,o=MMM#0#Home*))

не возвращал ни одной записи. Зато отлично работал фильтр

(&(objectclass=user)(homeDirectory=*))

который перечислял только тех пользователей, у которых домашняя директория вообще определена. Но, поскольку из таковых у нас большинство было именно на "передвигаемом" сервере, то вырезать ненужных вручную оказалось несложно.

В-четвёртых, сам "переезд" информации на другой сервер с перераздачей прав/атрибутов/владельцев/квот был выполнен следующим образом. Сначала при помощи ArcServe (функция "Copy") была скопирована сама информация. А затем всё остальное было переназначено с помощью утилиты TRUSTEE.NLM: на старом сервере

load trustee SAVE OLDVOLUME:\HOME OLDVOLUME:\HOME.XML

а затем на новом сервере -

load trustee RESTORE NEWVOLUME:\HOME.XML

В самом файле HOME.XML через контекстный поиск/замену надо было лишь поменять имя тома. Во избежание проблем с теми редкими пользователями, у кого могли остаться явные ссылки именно на конкретный сервер (например, Permanent MAP средствами клиента), на старом сервере были убраны права той же утилиткой, командой

load trustee REMOVE OLDVOLUME:\HOME

Причём для выполнения двух последних действий мне даже не понадобилось ждать завершения копирования самих файлов: засунул эти команды в SYS:\ETC\CRONTAB, и они отработали в заданное время сами. Вот это мне понравилось! :D К утилите TRUSTEE.NLM у меня пока претензий нет, только положительные эмоции. Даже в процессе работы (порядка 7-8 минут на обработку свыше 250 тыс. файлов) она грузила сервер совсем не сильно: утилизация процессора дежалась на уровне 10-15%.
Аватара пользователя
Константин Ошмян
 
Сообщения: 961
Зарегистрирован: 13 авг 2002, 21:36
Откуда: Рига

I've got an idea...

Сообщение Андрей Троценко » 06 июл 2004, 20:49

М-да, я когда-то заложил в дерево некоторую гибкость как раз для таких случаев - смены сервера: создал объект том в NDS (наз. HOMES), показывающий на том с домашними каталогами, а свойство пользователей Home Directory ссылается именно на него. При смене сервера, только поменял сервер-владельца в свойствах HOMES, и все.
Аватара пользователя
Андрей Троценко
 
Сообщения: 529
Зарегистрирован: 31 июл 2002, 13:54
Откуда: Киев, Украина

Re: I've got an idea...

Сообщение Сергей Дубров » 07 июл 2004, 07:22

Андрей Троценко писал(а):М-да, я когда-то заложил в дерево некоторую гибкость как раз для таких случаев - смены сервера: создал объект том в NDS (наз. HOMES), показывающий на том с домашними каталогами, а свойство пользователей Home Directory ссылается именно на него. При смене сервера, только поменял сервер-владельца в свойствах HOMES, и все.

ЗдОрово! А я вот всё не устаю удивляться гению John Baird - его новая утилита Movehome - это просто оно самое и есть, что Константину нужно было с самого начала:

Movehome-W32 v1.01: Copies or moves the contents of the home directory from the old location to the new, updates the "Home Directory" attribute, the "Message Server" attribute if applicable, and can optionally delete the old home directory and contents.
Аватара пользователя
Сергей Дубров
 
Сообщения: 2072
Зарегистрирован: 05 июн 2002, 06:07
Откуда: Новосибирск, ин-т ядерной физики СО РАН

Сообщение Константин Ошмян » 07 июл 2004, 10:21

Андрей Троценко писал(а):М-да, я когда-то заложил в дерево некоторую гибкость как раз для таких случаев - смены сервера: создал объект том в NDS (наз. HOMES), показывающий на том с домашними каталогами, а свойство пользователей Home Directory ссылается именно на него. При смене сервера, только поменял сервер-владельца в свойствах HOMES, и все.
Логично! :yelclap: В принципе, с тем же успехом можно было воспользоваться и объектом Alias. По крайней мере, я мог бы это сделать при предыдущем переносе - не пришлось бы теперь возиться. :?
Сергей Дубров писал(а):А я вот всё не устаю удивляться гению John Baird - его новая утилита Movehome - это просто оно самое и есть, что Константину нужно было с самого начала
Сергей, а она из которого комплекта - бесплатного или деньги? :wink:
Аватара пользователя
Константин Ошмян
 
Сообщения: 961
Зарегистрирован: 13 авг 2002, 21:36
Откуда: Рига

Сообщение Сергей Дубров » 07 июл 2004, 10:33

Константин Ошмян писал(а):
Сергей Дубров писал(а):А я вот всё не устаю удивляться гению John Baird - его новая утилита Movehome - это просто оно самое и есть, что Константину нужно было с самого начала
Сергей, а она из которого комплекта - бесплатного или деньги? :wink:

За деньги. У него в бесплатных остались только 16-ти разрядные bindery утилиты. А movehome он вообще написал только для последней версии своего набора утилит, сильно его народ об этом просил.
Аватара пользователя
Сергей Дубров
 
Сообщения: 2072
Зарегистрирован: 05 июн 2002, 06:07
Откуда: Новосибирск, ин-т ядерной физики СО РАН

След.

Вернуться в Novell

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6

cron