Já faz algum tempo que não escrevo algo neste blog, o tempo esta correndo muito rápido. Mas devido alguns pedido por e-mail estou escrevendo sobre a migração de usuários para a ferramenta GOsa.
Este é um assunto que mais cedo ou mais tarde todos temos que passar. Após a instalação da infraestrutura com o OpenLDAP , SAMBA, GOsa e outras ferramentas de integração, temos que criar os usuários.
Normalmente programamos uma estrutura assim em um ambiente que já existem os usuários e, portanto precisamos migrar esses usuários para o LDAP e que sejam visível na ferramenta GOsa.
O processo de migração é fácil. Precisamos basicamente criar um arquivo LDIF com um padrão de registro que vamos utilizar. Como exemplo, utilizarei um usuário que faz autenticação no samba e no proxy squid.
Para este caso precisamos manter duas variáveis sobre controle para não repetir os seus valores. A primeira variável é o uidnumber e a outra é o SID do samba.
No caso do uidNumber podemos pesquisar na base LDAP todos os uidNumber, verificar o maior e incrementar para o próximo usuário. Para realizar esse processo utilizamos o seguintes comando no bash.
id_tmp=`ldapsearch -LL -x -b "dc=base,dc=ldap" uidNumber | grep uidNumber | sort -n | tail -1 | awk '{print $2}'`
Com o comando acima, obtemos o maior uidNumber cadastrado na base LDAP. E o comando abaixo incrementa o idNumber encontrado de mais um (+1).
id=`expr $id_tmp + 1`
Com a variável SID o procedimento e o mesmo. O formato do SID é este S-1-5-21-3427200827-1333373418-835043165-8990, e o incremento é feito nos quatro últimos números. Para fazer isso podemos utilizar os seguintes comandos bash.
sid_tmp=`ldapsearch -LL -x -b "ou=users,dc=nucleo,dc=unasp" sambaSID | grep sambaSID | sort -n | tail -1 |awk '{print $2}'` sid_p1=`echo $sid_tmp | cut -d - -f 1,2,3,4,5,6,7` sid_p2=`echo $sid_tmp | cut -d - -f 8` sid_p3=`expr $sid_p2 + 2` sid="$sid_p1-$sid_p3"
Com o comando acima, pegamos o último SID cadastrado na base LDAP e incrementamos os últimos 4 números.
Basicamente esses são os principais elementos de dificuldade para fazermos a migração. O próximo passo é definir o arquivo que lista todos os usuários que serão migrados para a base LDAP.
Segue um exemplo deste arquivo, lembre-se de fazer os ajustes para se adequar a sua realidade.
login:Primeiro Nome:SobreNome:Unidade:descrição:departamento:sala:email:telefone
Perceba que o arquivo limita os campos com o separador (: dois ponos). O programa deve ler essas variáveis da seguinte forma:
login=`echo $line | cut -d : -f 1` p_nome=`echo $line | cut -d : -f 2` u_nome=`echo $line | cut -d : -f 3` unidade=`echo $line | cut -d : -f 4` descricao=`echo $line | cut -d : -f 5` departamento=`echo $line | cut -d : -f 6` email=`echo $line | cut -d : -f 7` tel=`echo $line | cut -d : -f 8`
Esses campos são gravados nos seguintes atributos na base LDAP.
Script |
Atributo LDAP |
Login |
Uid |
Descricao |
Ou |
Departamento |
departmentNumber |
Tel |
TelephoneNumber |
O |
Unidade |
|
HomePostalAddress |
Login |
Uid |
Sid |
SambaSID |
Ao executar o script é necessário passar como parâmetro o arquivo que contêm a lista de todos os usuários.
[root@cabeca]# ./migracao list_usuario
O link abaixo tem o script completo.
0sem comentários ainda