En esta ocasión vamos migrar usuarios de un servidor Windows 2003 que es un controlador de dominio de Active Directory a un servidor Ubuntu 12.04.
Este procedimiento fue el que emplee para migrar mi servidor RAS en Windows para Ubuntu.
En el siguiente link publique un articulo acerca de la instalación de un server RAS en Ubuntu 12.04.
http://own-kb.blogspot.com/2015/03/instalar-server-ras-en-ubuntu-1204-con.html
La historia abreviada es que tenía un servidor de acceso remoto en Windows 2003 y necesite migrarlo a Linux, dicho servidor era un controlador de dominio de AD y los usuarios tenían activada la opción “verify caller id” para las llamadas entrantes. Mi tarea consistió en escribir y ejecutar un script en este server que me diera un archivo con todos los usuarios y sus respectivos números telefónicos para el verify caller id, para luego escribir y ejecutar otro script en el server Ubuntu 12.04 para la creación automatizada de estos usuarios; en mi caso se trataba de algo más de 100 usuarios, de modo que la tarea manual era algo “pesada”; siempre quedo pendiente el tema contraseña, creo que siempre quedara pendiente, no creo que algún SO almacene la contraseña de los usuarios en texto claro, de modo que sería algo difícil hacer un script para obtener la contraseña en texto claro para luego crear el usuario en Ubuntu con dicha contraseña; mi estrategia al respecto fue poner una contraseña predeterminada en archivo de creación de usuarios que luego debería ser cambiada.
En el siguiente link publique un articulo acerca de la instalación de un server RAS en Ubuntu 12.04.
http://own-kb.blogspot.com/2015/03/instalar-server-ras-en-ubuntu-1204-con.html
La historia abreviada es que tenía un servidor de acceso remoto en Windows 2003 y necesite migrarlo a Linux, dicho servidor era un controlador de dominio de AD y los usuarios tenían activada la opción “verify caller id” para las llamadas entrantes. Mi tarea consistió en escribir y ejecutar un script en este server que me diera un archivo con todos los usuarios y sus respectivos números telefónicos para el verify caller id, para luego escribir y ejecutar otro script en el server Ubuntu 12.04 para la creación automatizada de estos usuarios; en mi caso se trataba de algo más de 100 usuarios, de modo que la tarea manual era algo “pesada”; siempre quedo pendiente el tema contraseña, creo que siempre quedara pendiente, no creo que algún SO almacene la contraseña de los usuarios en texto claro, de modo que sería algo difícil hacer un script para obtener la contraseña en texto claro para luego crear el usuario en Ubuntu con dicha contraseña; mi estrategia al respecto fue poner una contraseña predeterminada en archivo de creación de usuarios que luego debería ser cambiada.
Vamos a lo concreto; el script VB (tomando ejemplos de MS TechNet Script Center y modificando a mis necesidades) nos va a crear un archivo de texto separado por comas con la siguiente estructura:
Nombre descriptivo del usuario, usuario, teléfonos de anclaje
A continuación del código del script vbs (copie y pegue este código dentro de un archivo de texto con extensión .vbs)
On Error Resume Next
Const ADS_SCOPE_SUBTREE = 2
Const FOR_WRITING = 2
REM Nombre y ruta del archivo separado por comas q se va a llenar
REM El fichero debe de ser creado manualmente antes de ejecutar
REM El script solo va a escribir dentro del fichero
strFileName = "D:\usuarios_ras.csv"
Set objFS = CreateObject("Scripting.FileSystemObject")
Set objTS = objFS.OpenTextFile(strFileName,FOR_WRITING)
Set objConnection = CreateObject("ADODB.Connection")
Set objCommand = CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
Set objCommand.ActiveConnection = objConnection
objCommand.Properties("Page Size") = 1000
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
REM En la siguiente linea debe modificarse para un dominio AD
objCommand.CommandText = _
"SELECT AdsPath,Name,sAMAccountName FROM 'LDAP://dc=dominio,dc=cu' WHERE objectCategory='user'"
Set objRecordSet = objCommand.Execute
objRecordSet.MoveFirst
Do Until objRecordSet.EOF
arregloPhones=Array(0)
'Wscript.Echo objRecordSet.Fields("AdsPath").Value
Set objUser = GetObject(objRecordSet.Fields("AdsPath").Value)
arregloPhones = objUser.GetEx("msNPSavedCallingStationID")
objTS.Write objRecordSet.Fields("Name").Value + "," + objRecordSet.Fields("sAMAccountName").Value + ","
For Each strPhone in arregloPhones
objTS.Write strPhone + ","
Next
objTS.WriteLine
objRecordSet.MoveNext
Loop
objTS.Close
Después de ejecutado el script vamos a abrir el fichero “usuarios_ras.csv” con MS EXCEL y allí hacemos ajustes pertinentes, tales como eliminar usuarios propios del SO Windows 2003, insertar como tercera columna donde pondremos los password por defecto, editamos los nombres descriptivos para que no tengas espacios, eliminamos los acentos, etc, de modo que este fichero nos quede con 4 columnas (o más en caso de que un usuario tuviera más de un teléfono anclado) con la siguiente estructura.
A
|
B
|
C
|
D
|
Nombre_descriptivo_del_usuario
|
usuario
|
Password
|
Teléf.
|
Las columnas con los números de teléfono la podremos usar más adelante para configurar el archivo /etc/mgetty/dialing.config para el RAS en Ubuntu.
Continuando con nuestro fichero vamos a guardarlo en MS EXCEL con el formato de archivo separado por comas, quedando algo así:
Nombre_descriptivo_del_usuario, usuario, password, teléfonos_de_anclaje
Vamos a “subir” este archivo y el siguiente script BASH para nuestro server Ubuntu.
Copie y pegue el siguiente código dentro de un archivo de texto y guárdelo con extensión .sh. Este bash fue tomado del siguiente link:
Y luego ajustado a mis necesidades, el original usa : como separador y en mi caso uso coma, además se simplifico de manera que no se hacen las comprobaciones para detectar que es root quien ejecuta entre otras simplificaciones, también modifique para añadir a los usuario dentro del grupo “usuarios_ras” que debe existir previamente antes de ejecutar el bash.
#!/bin/sh
group="usuarios_ras"
users=$(cat usuarios_ras.csv)
for u in $users
do
nombre=`echo $u|cut -d, -f1`
usuario=`echo $u|cut -d, -f2`
contra=`echo $u|cut -d, -f3`
ultimacolumna=`echo $u|cut -d, -f4`
echo "Creando $nombre -> usuario=$nombre pass=$contra"
useradd -m -s /bin/bash -c $nombre --gid $group $usuario
echo "$usuario:$contra"|chpasswd --md5
done
Finalmente ejecutamos nuestro script BASH y si todo esta ok ya tendremos un lote de usuarios creados en nuestro Ubuntu 12.04
# bash crear_usuarios.sh