diff options
author | ramon <ramongomez@us.es> | 2012-06-11 09:28:01 +0000 |
---|---|---|
committer | ramon <ramongomez@us.es> | 2012-06-11 09:28:01 +0000 |
commit | d81c0cbb2f73ec74858b5f986618c21ab70e8740 (patch) | |
tree | afb9c4723d0751bf59fc1045c6d559804c34732f | |
parent | fcc63690858d8319536b5f58fd40544537d5e765 (diff) |
Versión 1.0.4, #527: Mover funciones a librería {{{PostConf}}} y adaptar función {{{ogInstallWindowsClient}}}.
git-svn-id: https://opengnsys.es/svn/branches/version1.0@3169 a21b9725-9963-47de-94b9-378ad31fedc9
-rwxr-xr-x | client/engine/PostConf.lib | 256 | ||||
-rwxr-xr-x | client/engine/PostConfEAC.lib | 313 |
2 files changed, 254 insertions, 315 deletions
diff --git a/client/engine/PostConf.lib b/client/engine/PostConf.lib index cf61220e..c38aa234 100755 --- a/client/engine/PostConf.lib +++ b/client/engine/PostConf.lib @@ -10,6 +10,120 @@ #/** +# ogAddCmd int_ndisk int_npartition str_filename str_commands +#@brief Añade comandos al cmd creado por ogInstalMiniSetup +#@param int_ndisk nº de orden del disco +#@param int_npartition nº de orden de la partición +#@param str_filename nombre del fichero cmd (siempre se guardara en windows\system32\para que sea visible por el sistema +#@param str_commands comando o comandos que se añadiran al fichero +#@return +#@exception OG_ERR_FORMAT Formato incorrecto. +#@exception OG_ERR_PARTITION Tipo de partición desconocido o no se puede montar. +#@version 1.0.2 - Nueva función +#@author Jonathan Alonso Martinez - Universidad Autonoma de Barcelona +#@date 2011-06-29 +#@version 1.0.4 - Cambios en los parametros de entrada de la funcion +#@author Jonathan Alonso Martinez - Universidad Autonoma de Barcelona +#@date 2012-04-16 +#*/ ## + +function ogAddCmd () +{ +local MOUNTPOINT CMDFILE +# Si se solicita, mostrar ayuda. +if [ "$*" == "help" ]; then + ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk int_npartition str_filename str_commands" \ + "$FUNCNAME 1 1 filename.cmd command" + return +fi +# Error si no se reciben 4 parámetros. +[ $# == 4 ] || return $(ogRaiseError $OG_ERR_FORMAT; echo $?) +# Punto de montaje +MOUNTPOINT="$(ogMount "$1" "$2") || return $? +# Comprobar que existe el fichero de comandos. +CMDFILE=$(ogGetPath "$MOUNTPOINT/windows/system32/$3") +[ -n "$CMDFILE" ] || ogRaiseError $OG_ERR_NOTFOUND "$MOUNTPOINT/windows/system32/$3" || return $? + +# Concatenamos el comando en el fichero de comandos +cat >> "$CMDFILE" << EOF +$4 +EOF +} + + +#/** +# ogDomainScript int_ndisk int_npartition str_domain str_user str_password +#@brief Crea un script .vbs para unir al dominio una maquina windows y el comando adequado en el archivo cmd creado por ogInstallMiniSetup +#@param int_ndisk nº de orden del disco +#@param int_npartition nº de orden de la partición +#@param str_filename nombre del fichero cmd donde deberemos introducir el comando de ejecutar el script vbs +#@param str_domain dominio donde se quiere conectar +#@param str_user usuario con privilegios para unir al dominio +#@param str_password password del usuario con privilegios +#@return +#@exception OG_ERR_FORMAT Formato incorrecto. +#@version 1.0.2 - Nueva función +#@author Jonathan Alonso Martinez - Universidad Autonoma de Barcelona +#@date 2011-06-29 +#@version 1.0.4 - Cambios en los parametros de entrada de la funcion +#@author Jonathan Alonso Martinez - Universidad Autonoma de Barcelona +#@date 2012-04-16 +#*/ ## + +function ogDomainScript () +{ +local CMDDIR +# Si se solicita, mostrar ayuda. +if [ "$*" == "help" ]; then + ogHelp "$FUNCNAME" \ + "$FUNCNAME int_ndisk int_npartition str_filename str_domain str_user str_password" \ + "$FUNCNAME 1 1 filename.cmd domain user password_user" + return +fi +# Error si no se reciben 6 parámetros. +[ $# == 6 ] || return $(ogRaiseError $OG_ERR_FORMAT; echo $?) +# Punto de montaje +MOUNTPOINT="$(ogMount "$1" "$2")" || return $? +# Comprobar que existe el directorio de comandos. +CMDDIR=$(ogGetPath "$MOUNTPOINT/windows/system32") +[ -n "$CMDDIR" ] || ogRaiseError $OG_ERR_NOTFOUND "$1/windows/system32" || return $? + +# Añadimos en el cmd que se ejecutara al arranque, el comando de ejecutar el script que añade al dominio. +ogAddCmd $1 $2 "$3" "CSCRIPT joindomain.vbs" +# Eliminamos el script porque tiene el usuario de administrador de dominio en claro +ogAddCmd $1 $2 "$3" "del /Q C:\Windows\System32\joindomain.vbs" +# Metemos unas claves de registro para que el dominio salga seleccionado por defecto +ogAddCmd $1 $2 "$3" "REG ADD \"HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\" /v DefaultDomainName /t REG_SZ /d \"$3\" /f" + +# Creamos el archivo joindomain.vbs que nos introduce la maquina en el dominio +cat > "$CMDDIR/joindomain.vbs" << EOF +Const JOIN_DOMAIN = 1 +Const ACCT_CREATE = 2 +Const ACCT_DELETE = 4 +Const WIN9X_UPGRADE = 16 +Const DOMAIN_JOIN_IF_JOINED = 32 +Const JOIN_UNSECURE = 64 +Const MACHINE_PASSWORD_PASSED = 128 +Const DEFERRED_SPN_SET = 256 +Const INSTALL_INVOCATION = 262144 + +strDomain = "$4" +strUser = "$5" +strPassword = "$6" + +Set objNetwork = CreateObject("WScript.Network") +strComputer = objNetwork.ComputerName + +Set objComputer = GetObject("winmgmts:{impersonationLevel=Impersonate}!\\\" & _ + strComputer & "\root\cimv2:Win32_ComputerSystem.Name='" & strComputer & "'") + +ReturnValue = objComputer.JoinDomainOrWorkGroup(strDomain, strPassword, _ + strDomain & "\" & strUser, NULL, JOIN_DOMAIN + ACCT_CREATE) +EOF +} + + +#/** # ogInstallLinuxClient int_ndisk int_filesys #@brief Instala el cliente OpenGnSys para sistemas operativos Linux. #@param int_ndisk nº de orden del disco @@ -80,6 +194,144 @@ ogUnlock $1 $2 #/** +# ogInstallMiniSetup +#@brief Metafunción para instalar archivo que se ejecutará en el arranque de Windows. +#@see ogInstallFirstBoot ogInstallRunonce +#*/ ## +function ogInstallMiniSetup () +{ +case $# in + 3) # Ejecución en el primer arranque de la máquina. + ogInstallFirstBoot "$@" ;; + 6|8) # Ejecución en el "runonce". + ogInstallRunonce "$@" ;; + *) ogRaiseError $OG_ERR_FORMAT + exit $? ;; +esac +} + + +#/** +# ogInstallFirstBoot int_ndisk int_npartition str_filename +#@brief Crea unas claves del registro y el archivo cmd que se ejecutara en el primer arranque estando la maquina en un estado bloqueado +#@param int_ndisk nº de orden del disco +#@param int_npartition nº de orden de la partición +#@param str_filename nombre del archivo .cmd a ejecutar en el arranque +#@return (nada) +#@exception OG_ERR_FORMAT Formato incorrecto. +#@note El archivo estará en system32 y será visible por el sistema. +#@version 1.0.2 - Nueva función +#@author Jonathan Alonso Martinez - Universidad Autonoma de Barcelona +#@date 2011-06-29 +#@version 1.0.4 - Heredada de antigua función ogInstallMiniSetup. +#@author Jonathan Alonso Martinez - Universidad Autonoma de Barcelona +#@date 2012-04-16 +#*/ ## +function ogInstallMiniSetup () +{ +local MNTDIR DIR CMDDIR CMDFILE +# Si se solicita, mostrar ayuda. +if [ "$*" == "help" ]; then + ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk int_npartition str_filename" \ + "$FUNCNAME 1 1 filename.cmd" + return +fi +# Error si no se reciben 2 parámetros. +[ $# == 3 ] || return $(ogRaiseError $OG_ERR_FORMAT; echo $?) +# Comprobar que existe el directorio del fichero de comandos. +MNTDIR=$(ogMount "$1" "$2") || return $? +for i in winnt windows; do + DIR=$(ogGetPath $MNTDIR/$i/system32) + [ -n "$DIR" ] && CMDDIR=$DIR +done +[ -n "$CMDDIR" ] || ogRaiseError $OG_ERR_NOTFOUND "$MNTDIR/windows/system32" || return $? +CMDFILE="$CMDDIR/$2" + +# Creamos el archivo cmd y creamos un par de comandos para que una vez acabe la +# postconfiguracion resetee el mini setup, sino lo haria en cada arranque. +cat > "$CMDFILE" << EOF +REG ADD HKLM\System\Setup /v SystemSetupInProgress /t REG_DWORD /d 0 /f +REG ADD HKLM\System\Setup /v CmdLine /t REG_SZ /d "" /f +EOF + +#Creamos las claves de registro necesarias para que se haga la ejecucion del .cmd al aranque +ogSetRegistryValue "$MNTDIR" SYSTEM "\Setup\SystemSetupInProgress" 1 +ogSetRegistryValue "$MNTDIR" SYSTEM "\Setup\SetupType" 4 +ogSetRegistryValue "$MNTDIR" SYSTEM "\Setup\CmdLine" "cmd.exe /c $2" +} + + +#/** +# ogInstallRunonce int_ndisk int_npartition str_filename str_adm_user str_adm_password bool_autologin [str_auto_user str_auto_password] +#@brief Crea el archivo cmd que se ejecutara en el runonce de un usuario administrador +#@param int_ndisk nº de orden del disco +#@param int_npartition nº de orden de la partición +#@param str_filename nombre del archivo .cmd a ejecutar en el arranque (estara en system32 y sera visible por el sistema) +#@param str_adm_user usuario administrador para hacer autologin y ejecutar el runonce +#@param str_adm_password password del usuario administrador +#@param bool_autologin si despues de la postconfiguracion queremos que la maquina haga autologin (0 o 1) +#@param str_auto_user Usuario con el que queremos que haga +autologin despues de la postconfiguracion +#@param str_auto_password Password del usuario que hara autologin +#@return (nada) +#@exception OG_ERR_FORMAT Formato incorrecto. +#@version 1.0.2 - Nueva función +#@author Jonathan Alonso Martinez - Universidad Autonoma de Barcelona +#@date 2011-06-29 +#@version 1.0.4 - Heredado de antigua función ogInstallMiniSetup +#@author Jonathan Alonso Martinez - Universidad Autonoma de Barcelona +#@date 2012-04-16 +#*/ ## +function ogInstallRunonce () +{ +local MOUNTPOINT DIR CMDDIR CMDFILE +# Si se solicita, mostrar ayuda. +if [ "$*" == "help" ]; then + ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk int_npartition str_filename str_adm_user str_adm_password bool_autologin [str_auto_user str_auto_password]" \ + "$FUNCNAME 1 1 filename.cmd administrator passadmin 1 userauto passuserauto" \ + "$FUNCNAME 1 1 filename.cmd administrator passadmin 0" + return +fi +# Error si no se reciben 6 u 8 parámetros. +[ $# == 6 -o $# == 8 ] || return $(ogRaiseError $OG_ERR_FORMAT; echo $?) +# Punto de montaje. +MOUNTPOINT="$(ogGetPath "$1" "$2" /)" +# Comprobar que existe el directorio del fichero de comandos. +for i in winnt windows; do + DIR=$(ogGetPath $MOUNTPOINT/$i/system32) + [ -n "$DIR" ] && CMDDIR=$DIR +done +[ -n "$CMDDIR" ] || ogRaiseError $OG_ERR_NOTFOUND "$MOUNTPOINT/Windows/System32" || return $? +CMDFILE="$CMDDIR/$3" + +if [ $6 == 0 ]; then + # Si no volem fer autologin despres de la postconfiguracio o indiquem a las claus de registre + cat > "$CMDFILE" << EOF +DEL C:\ogboot.* +REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v AutoAdminLogon /t REG_SZ /d 0 /f +REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v DefaultUserName /t REG_SZ /d "" /f +REG DELETE "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v DefaultPassword /f +EOF +else + # Si volem fer autologin despres de la postconfiguracio introduim l'informacio a les claus de registre + cat > "$CMDFILE" << EOF +DEL C:\ogboot.* +REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v AutoAdminLogon /t REG_SZ /d 1 /f +REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v DefaultUserName /t REG_SZ /d "$7" /f +REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v DefaultPassword /t REG_SZ /d "$8" /f +EOF +fi +#Creamos las claves de registro necesarias para que meter el cmd en el runonce del usuario y este haga autologin +ogAddRegistryValue $MOUNTPOINT software '\Microsoft\Windows\CurrentVersion\RunOnce\PostConfiguracion' 2>/dev/null +ogSetRegistryValue $MOUNTPOINT software '\Microsoft\Windows\CurrentVersion\RunOnce\PostConfiguracion' "C:\windows\system32\\$3" 2>/dev/null +ogSetRegistryValue $MOUNTPOINT software '\Microsoft\Windows NT\CurrentVersion\Winlogon\AutoAdminLogon' 1 2>/dev/null +ogSetRegistryValue $MOUNTPOINT software '\Microsoft\Windows NT\CurrentVersion\Winlogon\DefaultUserName' "$4" 2>/dev/null +ogAddRegistryValue $MOUNTPOINT software '\Microsoft\Windows NT\CurrentVersion\Winlogon\DefaultPassword' 2>/dev/null +ogSetRegistryValue $MOUNTPOINT software '\Microsoft\Windows NT\CurrentVersion\Winlogon\DefaultPassword' "$5" 2>/dev/null +} + + +#/** # ogInstallWindowsClient int_ndisk int_filesys #@brief Instala el cliente OpenGnSys para sistemas operativos Windows. #@param int_ndisk nº de orden del disco @@ -122,8 +374,8 @@ done ogLock $1 $2 # Copiar cliente, generar fichero de configuración e incluir en el arranque. cp -a $CLIENTFILE "$WINDIR" -ogInstallMiniSetup $MNTDIR ogclient.cmd -ogAddCmd $MNTDIR ogclient.cmd "ogAdmWinClient -install -s $(ogGetServerIp) -p 2008 -i $(ogGetIpAddress)" +ogInstallMiniSetup $1 $2 ogclient.cmd +ogAddCmd $1 $2 ogclient.cmd "ogAdmWinClient -install -s $(ogGetServerIp) -p 2008 -i $(ogGetIpAddress)" ogUnlock $1 $2 } diff --git a/client/engine/PostConfEAC.lib b/client/engine/PostConfEAC.lib index f976dba8..a87f3cee 100755 --- a/client/engine/PostConfEAC.lib +++ b/client/engine/PostConfEAC.lib @@ -13,73 +13,6 @@ #*/ ## -function ogLoadHiveWindows () { -# Variables locales. -local PART DISK - -# Si se solicita, mostrar ayuda. -if [ "$*" == "help" ]; then - ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk int_partition" \ - "$FUNCNAME 1 1 " - return -fi - -# Error si no se reciben 2 parámetros. -[ $# == 2 ] || return $(ogRaiseError $OG_ERR_FORMAT; echo $?) - -DISK=$1; PART=$2; - -#Comprobaciones redundantes: borrar" -#ogDiskToDev $DISK $PART || return $(ogRaiseError $OG_ERR_PARTITION "particion de windows no detectada"; echo $?) -#ogGetOsType $DISK $PART | grep "Windows" || return $(ogRaiseError $OG_ERR_NOTOS "no es windows"; echo $?) -#VERSION=$(ogGetOsVersion $DISK $PART) -#Fin Comprobaciones redundantes: borrar" - - -# primera fase, carga de los hive del sistema -if ogGetPath $DISK $PART WINDOWS -then - SYSTEMROOT="Windows" -elif ogGetPath $DISK $PART WINNT -then - SYSTEMROOT="winnt" -else - return $(ogRaiseError $OG_ERR_NOTOS "version windows no detectada"; echo $?) -fi - -hiveSAM=$(ogGetPath $DISK $PART /${SYSTEMROOT}/system32/config/SAM) && export hiveSAM || return $(ogRaiseError $OG_ERR_NOTOS " hive SAM no detectada"; echo $?) -hiveSYSTEM=$(ogGetPath $DISK $PART /${SYSTEMROOT}/system32/config/system) && export hiveSYSTEM || return $(ogRaiseError $OG_ERR_NOTOS "hive SYSTEM no detectada"; echo $?) -hiveSOFTWARE=$(ogGetPath $DISK $PART /${SYSTEMROOT}/system32/config/software) && export hiveSOFTWARE || return $(ogRaiseError $OG_ERR_NOTOS "hive SOFTWARE no detectada"; echo $?) -export TEMPhive=/tmp/tmpregistry - -# segunda fase, carga de los hive de usuarios windows. -declare -i COUNT -COUNT=3 -#TODO WINDOWS XP WINDOWS7 -BASEHOMEDIR=$(ogGetPath $DISK $PART /"Documents and Settings") -TMPUSERFILE="/tmp/WuserRegAndDAT.tmp" -find "$BASEHOMEDIR/" -type f -name NTUSER.DAT > $TMPUSERFILE -LISTUSERS=$(drbl-chntpw -l $hiveSAM | grep RID | awk -F"<" '{print $2}' | awk -F">" '{print $1}') -#echo "$BASEHOMEDIR" $LISTUSERS -for user in $LISTUSERS -do - # Comprobamos que el usuario registrado tiene .DAT - if HOMEDIR=$(cat $TMPUSERFILE | grep -w $user) - then - #echo "$user exportamos los usuarios de windows como variables, y como valor hiveUSERX; donde la X es 3 4 5 6 ... X" - export `echo $user=hiveUSER$COUNT` - #echo "$user exportamos la variable hiveUSERX con el valor del home de la variable-usuario_windows" - ##export `echo hiveUSER$COUNT`="$(echo $HOMEDIR | sed -e 's/ /\\ /'g | sed -e 's/\\/\\\\/g')" - export `echo hiveUSER$COUNT`="$(echo $HOMEDIR)" - #echo " estas variables \$USUARIO -> Identificador del HIVE ; \${!USUARIO} -> path del HIVE " - COUNT=${COUNT}+1 - fi - -done -COUNT=0 -} - - # ogUpdateHiveWindows #@brief Actualiza los hive de windows. #@param int_ndisk @@ -601,249 +534,3 @@ schroot -c linux schroot -end-sessiona --all-sessions } - -#/** -# ogInstallMiniSetup -#@brief Metafunción para instalar archivo que se ejecutará en el arranque de Windows. -#@see ogInstallFirstBoot ogInstallRunonce -#*/ ## -function ogInstallMiniSetup () -{ -case $# in - 3) # Ejecución en el primer arranque de la máquina. - ogInstallFirstBoot "$@" ;; - 6|8) # Ejecución en el "runonce". - ogInstallRunonce "$@" ;; - *) ogRaiseError $OG_ERR_FORMAT - exit $? ;; -esac -} - - -#/** -# ogInstallFirstBoot int_ndisk int_npartition str_filename -#@brief Crea unas claves del registro y el archivo cmd que se ejecutara en el primer arranque estando la maquina en un estado bloqueado -#@param int_ndisk nº de orden del disco -#@param int_npartition nº de orden de la partición -#@param str_filename nombre del archivo .cmd a ejecutar en el arranque -#@return (nada) -#@exception OG_ERR_FORMAT Formato incorrecto. -#@note El archivo estará en system32 y será visible por el sistema. -#@version 1.0.2 - Nueva función -#@author Jonathan Alonso Martinez - Universidad Autonoma de Barcelona -#@date 2011-06-29 -#@version 1.0.4 - Heredada de antigua función ogInstallMiniSetup. -#@author Jonathan Alonso Martinez - Universidad Autonoma de Barcelona -#@date 2012-04-16 -#*/ ## -function ogInstallMiniSetup () -{ -local MNTDIR CMDDIR CMDFILE -# Si se solicita, mostrar ayuda. -if [ "$*" == "help" ]; then - ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk int_npartition str_filename" \ - "$FUNCNAME 1 1 filename.cmd" - return -fi -# Error si no se reciben 2 parámetros. -[ $# == 3 ] || return $(ogRaiseError $OG_ERR_FORMAT; echo $?) -# Comprobar que existe el directorio del fichero de comandos. -MNTDIR=$(ogMount "$1" "$2") || return $? -CMDDIR=$(ogGetPath "$MNTDIR/windows/system32") -[ -n "$CMDDIR" ] || ogRaiseError $OG_ERR_NOTFOUND "$1/windows/system32" || return $? -CMDFILE="$CMDDIR/$2" - -# Creamos el archivo cmd y creamos un par de comandos para que una vez acabe la -# postconfiguracion resetee el mini setup, sino lo haria en cada arranque. -cat > "$CMDFILE" << EOF -REG ADD HKLM\System\Setup /v SystemSetupInProgress /t REG_DWORD /d 0 /f -REG ADD HKLM\System\Setup /v CmdLine /t REG_SZ /d "" /f -EOF - -#Creamos las claves de registro necesarias para que se haga la ejecucion del .cmd al aranque -ogSetRegistryValue "$MNTDIR" SYSTEM "\Setup\SystemSetupInProgress" 1 -ogSetRegistryValue "$MNTDIR" SYSTEM "\Setup\SetupType" 4 -ogSetRegistryValue "$MNTDIR" SYSTEM "\Setup\CmdLine" "cmd.exe /c $2" -} - - -#/** -# ogInstallRunonce int_ndisk int_npartition str_filename str_adm_user str_adm_password bool_autologin [str_auto_user str_auto_password] -#@brief Crea el archivo cmd que se ejecutara en el runonce de un -usuario administrador -#@param int_ndisk nº de orden del disco -#@param int_npartition nº de orden de la partición -#@param str_filename nombre del archivo .cmd a ejecutar en el -arranque (estara en system32 y sera visible por el sistema) -#@param str_adm_user usuario administrador para hacer -autologin y ejecutar el runonce -#@param str_adm_password password del usuario administrador -#@param bool_autologin si despues de la postconfiguracion queremos que la maquina haga autologin (0 o 1) -#@param str_auto_user Usuario con el que queremos que haga -autologin despues de la postconfiguracion -#@param str_auto_password Password del usuario que hara autologin -#@return (nada) -#@exception OG_ERR_FORMAT Formato incorrecto. -#@version 1.0.2 - Nueva función -#@author Jonathan Alonso Martinez - Universidad Autonoma de Barcelona -#@date 2011-06-29 -#@version 1.0.4 - Heredado de antigua función ogInstallMiniSetup -#@author Jonathan Alonso Martinez - Universidad Autonoma de Barcelona -#@date 2012-04-16 -#*/ ## -function ogInstallRunonce () -{ -local MOUNTPOINT CMDDIR CMDFILE -# Si se solicita, mostrar ayuda. -if [ "$*" == "help" ]; then - ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk int_npartition str_filename str_adm_user str_adm_password bool_autologin [str_auto_user str_auto_password]" \ - "$FUNCNAME 1 1 filename.cmd administrator passadmin 1 userauto passuserauto" \ - "$FUNCNAME 1 1 filename.cmd administrator passadmin 0" - return -fi -# Error si no se reciben 6 u 8 parámetros. -[ $# == 6 -o $# == 8 ] || return $(ogRaiseError $OG_ERR_FORMAT; echo $?) -# Punto de montaje. -MOUNTPOINT="$(ogGetPath "$1" "$2" /)" -# Comprobar que existe el directorio del fichero de comandos. -CMDDIR="$(ogGetPath "$1" "$2" /windows/system32)" -[ -n "$CMDDIR" ] || ogRaiseError $OG_ERR_NOTFOUND "$MOUNTPOINT/Windows/System32" || return $? -CMDFILE="$CMDDIR/$3" - -if [ $6 == 0 ]; then - # Si no volem fer autologin despres de la postconfiguracio o indiquem a las claus de registre - cat > "$CMDFILE" << EOF -DEL C:\ogboot.* -REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v AutoAdminLogon /t REG_SZ /d 0 /f -REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v DefaultUserName /t REG_SZ /d "" /f -REG DELETE "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v DefaultPassword /f -EOF -else - # Si volem fer autologin despres de la postconfiguracio introduim l'informacio a les claus de registre - cat > "$CMDFILE" << EOF -DEL C:\ogboot.* -REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v AutoAdminLogon /t REG_SZ /d 1 /f -REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v DefaultUserName /t REG_SZ /d "$7" /f -REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v DefaultPassword /t REG_SZ /d "$8" /f -EOF -fi -#Creamos las claves de registro necesarias para que meter el cmd en el runonce del usuario y este haga autologin -ogAddRegistryValue $MOUNTPOINT software '\Microsoft\Windows\CurrentVersion\RunOnce\PostConfiguracion' 2>/dev/null -ogSetRegistryValue $MOUNTPOINT software '\Microsoft\Windows\CurrentVersion\RunOnce\PostConfiguracion' "C:\windows\system32\\$3" 2>/dev/null -ogSetRegistryValue $MOUNTPOINT software '\Microsoft\Windows NT\CurrentVersion\Winlogon\AutoAdminLogon' 1 2>/dev/null -ogSetRegistryValue $MOUNTPOINT software '\Microsoft\Windows NT\CurrentVersion\Winlogon\DefaultUserName' "$4" 2>/dev/null -ogAddRegistryValue $MOUNTPOINT software '\Microsoft\Windows NT\CurrentVersion\Winlogon\DefaultPassword' 2>/dev/null -ogSetRegistryValue $MOUNTPOINT software '\Microsoft\Windows NT\CurrentVersion\Winlogon\DefaultPassword' "$5" 2>/dev/null -} - - -# ogAddCmd int_ndisk int_npartition str_filename str_commands -#@brief Añade comandos al cmd creado por ogInstalMiniSetup -#@param int_ndisk nº de orden del disco -#@param int_npartition nº de orden de la partición -#@param str_filename nombre del fichero cmd (siempre se guardara en windows\system32\para que sea visible por el sistema -#@param str_commands comando o comandos que se añadiran al fichero -#@return -#@exception OG_ERR_FORMAT Formato incorrecto. -#@exception OG_ERR_PARTITION Tipo de partición desconocido o no se puede montar. -#@version 1.0.2 - Nueva función -#@author Jonathan Alonso Martinez - Universidad Autonoma de Barcelona -#@date 2011-06-29 -#@version 1.0.4 - Cambios en los parametros de entrada de la funcion -#@author Jonathan Alonso Martinez - Universidad Autonoma de Barcelona -#@date 2012-04-16 -#*/ ## - -function ogAddCmd () -{ -local MOUNTPOINT CMDFILE -# Si se solicita, mostrar ayuda. -if [ "$*" == "help" ]; then - ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk int_npartition str_filename str_commands" \ - "$FUNCNAME 1 1 filename.cmd command" - return -fi -# Error si no se reciben 4 parámetros. -[ $# == 4 ] || return $(ogRaiseError $OG_ERR_FORMAT; echo $?) -# Punto de montaje -MOUNTPOINT="$(ogMount "$1" "$2") || return $? -# Comprobar que existe el fichero de comandos. -CMDFILE=$(ogGetPath "$MOUNTPOINT/windows/system32/$3") -[ -n "$CMDFILE" ] || ogRaiseError $OG_ERR_NOTFOUND "$MOUNTPOINT/windows/system32/$3" || return $? - -# Concatenamos el comando en el fichero de comandos -cat >> "$CMDFILE" << EOF -$4 -EOF -} - -# ogDomainScript int_ndisk int_npartition str_domain str_user str_password -#@brief Crea un script .vbs para unir al dominio una maquina windows y el comando adequado en el archivo cmd creado por ogInstallMiniSetup -#@param int_ndisk nº de orden del disco -#@param int_npartition nº de orden de la partición -#@param str_filename nombre del fichero cmd donde deberemos introducir el comando de ejecutar el script vbs -#@param str_domain dominio donde se quiere conectar -#@param str_user usuario con privilegios para unir al dominio -#@param str_password password del usuario con privilegios -#@return -#@exception OG_ERR_FORMAT Formato incorrecto. -#@version 1.0.2 - Nueva función -#@author Jonathan Alonso Martinez - Universidad Autonoma de Barcelona -#@date 2011-06-29 -#@version 1.0.4 - Cambios en los parametros de entrada de la funcion -#@author Jonathan Alonso Martinez - Universidad Autonoma de Barcelona -#@date 2012-04-16 -#*/ ## - -function ogDomainScript () -{ -local CMDDIR -# Si se solicita, mostrar ayuda. -if [ "$*" == "help" ]; then - ogHelp "$FUNCNAME" \ - "$FUNCNAME int_ndisk int_npartition str_filename str_domain str_user str_password" \ - "$FUNCNAME 1 1 filename.cmd domain user password_user" - return -fi -# Error si no se reciben 6 parámetros. -[ $# == 6 ] || return $(ogRaiseError $OG_ERR_FORMAT; echo $?) -# Punto de montaje -MOUNTPOINT="$(ogMount "$1" "$2")" || return $? -# Comprobar que existe el directorio de comandos. -CMDDIR=$(ogGetPath "$MOUNTPOINT/windows/system32") -[ -n "$CMDDIR" ] || ogRaiseError $OG_ERR_NOTFOUND "$1/windows/system32" || return $? - -# Añadimos en el cmd que se ejecutara al arranque, el comando de ejecutar el script que añade al dominio. -ogAddCmd $1 $2 "$3" "CSCRIPT joindomain.vbs" -# Eliminamos el script porque tiene el usuario de administrador de dominio en claro -ogAddCmd $1 $2 "$3" "del /Q C:\Windows\System32\joindomain.vbs" -# Metemos unas claves de registro para que el dominio salga seleccionado por defecto -ogAddCmd $1 $2 "$3" "REG ADD \"HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\" /v DefaultDomainName /t REG_SZ /d \"$3\" /f" - -# Creamos el archivo joindomain.vbs que nos introduce la maquina en el dominio -cat > "$CMDDIR/joindomain.vbs" << EOF -Const JOIN_DOMAIN = 1 -Const ACCT_CREATE = 2 -Const ACCT_DELETE = 4 -Const WIN9X_UPGRADE = 16 -Const DOMAIN_JOIN_IF_JOINED = 32 -Const JOIN_UNSECURE = 64 -Const MACHINE_PASSWORD_PASSED = 128 -Const DEFERRED_SPN_SET = 256 -Const INSTALL_INVOCATION = 262144 - -strDomain = "$4" -strUser = "$5" -strPassword = "$6" - -Set objNetwork = CreateObject("WScript.Network") -strComputer = objNetwork.ComputerName - -Set objComputer = GetObject("winmgmts:{impersonationLevel=Impersonate}!\\\" & _ - strComputer & "\root\cimv2:Win32_ComputerSystem.Name='" & strComputer & "'") - -ReturnValue = objComputer.JoinDomainOrWorkGroup(strDomain, strPassword, _ - strDomain & "\" & strUser, NULL, JOIN_DOMAIN + ACCT_CREATE) -EOF -} - |