diff options
author | jalonso <jonathan.alonso@uab.es> | 2013-03-21 11:48:52 +0000 |
---|---|---|
committer | jalonso <jonathan.alonso@uab.es> | 2013-03-21 11:48:52 +0000 |
commit | d177da736d7fa2221753e0607f402ac2035177f7 (patch) | |
tree | 58c043d6d376e434d5fbc604a7c69818cbb09f7a | |
parent | e538e62854c455159d593f18fa9c90c63875ae65 (diff) |
#578 integrado el cambio para arreglar la instalacion del cliente de windows, se ha integrado como una funcion dependiente de ogInstallMiniSetup (al estilo ogAddCmd) y no como una funcion autonoma
git-svn-id: https://opengnsys.es/svn/branches/version1.0@3707 a21b9725-9963-47de-94b9-378ad31fedc9
-rwxr-xr-x | client/engine/PostConf.lib | 203 | ||||
-rwxr-xr-x | client/shared/scripts/configureOs | 5 |
2 files changed, 206 insertions, 2 deletions
diff --git a/client/engine/PostConf.lib b/client/engine/PostConf.lib index adcb199f..cf15c04c 100755 --- a/client/engine/PostConf.lib +++ b/client/engine/PostConf.lib @@ -8,8 +8,9 @@ #@warning License: GNU GPLv3+ #*/ - #/** +<<<<<<< .mine +======= # 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 @@ -194,6 +195,7 @@ ogUnlock $1 $2 #/** +>>>>>>> .r3706 # ogInstallMiniSetup int_ndisk int_npartition str_filename [str_admuser str_admpassword bool_autologin [str_autouser str_autopassword] ] #@brief Metafunción para instalar archivo que se ejecutará en el arranque de Windows. #@see ogInstallFirstBoot ogInstallRunonce @@ -332,13 +334,133 @@ ogAddRegistryValue $MOUNTPOINT software '\Microsoft\Windows NT\CurrentVersion\Wi 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 +} + #/** +<<<<<<< .mine +# 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 \"$4\" /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 +} + +#/** +# ogInstallWindowsClient int_ndisk int_filesys +======= # ogInstallWindowsClient int_ndisk int_filesys str_filename +>>>>>>> .r3706 #@brief Instala el cliente OpenGnSys para sistemas operativos Windows. +<<<<<<< .mine +#@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 int_ndisk nº de orden del disco #@param int_filesys nº de orden del sistema de archivos #@param str_filename nombre del fichero cmd donde se introduce el comando de ejecutar el script VBS +>>>>>>> .r3706 #@return (nada) #@exception OG_ERR_FORMAT Formato incorrecto. #@exception OG_ERR_NOTFOUND Fichero o dispositivo no encontrado. @@ -351,6 +473,7 @@ ogSetRegistryValue $MOUNTPOINT software '\Microsoft\Windows NT\CurrentVersion\Wi #@author Jonathan Alonso Martinez - Universidad Autonoma de Barcelona #@date 2013-02-12 #*/ ## + function ogInstallWindowsClient () { # Variables locales. @@ -362,8 +485,13 @@ if [ "$*" == "help" ]; then return fi +<<<<<<< .mine +# Error si no se reciben 2 parámetros. +[ $# == 3 ] || ogRaiseError $OG_ERR_FORMAT || return $? +======= # Error si no se reciben 3 parámetros. [ $# == 3 ] || ogRaiseError $OG_ERR_FORMAT || return $? +>>>>>>> .r3706 # Obtener sistema de archvios. PART="$(ogDiskToDev $1 $2)" || return $? # Comprobar si el sistema de archivos no está bloqueado. @@ -377,12 +505,83 @@ for i in winnt windows; do [ -n "$DIR" ] && WINDIR=$DIR done [ -n "$WINDIR " ] || ogRaiseError $OG_ERR_NOTFOUND "$1 $2 windows" || return $? +# Copiar cliente e incluir en el fichero de configuracion dado que instale el cliente en el arranque. +cp -a $CLIENTFILE "$WINDIR" +ogAddCmd $1 $2 $3 "ogAdmWinClient -install -s $(ogGetServerIp) -p 2008 -i $(ogGetIpAddress)" +} + + +#/** +# ogInstallLinuxClient int_ndisk int_filesys +#@brief Instala el cliente OpenGnSys para sistemas operativos Linux. +#@param int_ndisk nº de orden del disco +#@param int_filesys nº de orden del sistema de archivos +#@return (nada) +#@exception OG_ERR_FORMAT Formato incorrecto. +#@exception OG_ERR_NOTFOUND Fichero o dispositivo no encontrado. +#@exception OG_ERR_PARTITION Paritición o sistema de archivos incorrectos. +#@exception OG_ERR_LOCKED Sistema de archivos bloqueado. +#@version 1.0.4 - Primera adaptación para OpenGnSys. +#@author Ramon Gomez, ETSII Universidad de Sevilla +#@date 2012-04-10 +#*/ ## +function ogInstallLinuxClient () +{ +# Variables locales. +local PART MNTDIR CLIENTFILE i SBINDIR ETCDIR RCLOCAL +# Si se solicita, mostrar ayuda. +if [ "$*" == "help" ]; then + ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk int_filesys" \ + "$FUNCNAME 1 1" + return +fi + +# Error si no se reciben 2 parámetros. +[ $# == 2 ] || ogRaiseError $OG_ERR_FORMAT || return $? +# Obtener sistema de archvios. +PART="$(ogDiskToDev $1 $2)" || return $? +# Comprobar si el sistema de archivos no está bloqueado. +MNTDIR=$(ogMount $1 $2) 2>/dev/null +[ -n "$MNTDIR" ] || ogRaiseError OG_ERR_PARTITION "$1, $2" || return $? +# Comprobar si existe el cliente y los directorios y ficheros destino. +CLIENTFILE=$OGLIB/ogclient/ogAdmLnxClient +[ -f $CLIENTFILE ] || ogRaiseError $OG_ERR_FOUND "$CLIENTFILE" || return $? +for i in /usr/local/sbin /sbin /usr/sbin; do + [ -d $MNTDIR/$i ] && SBINDIR=$i +done +[ -n "$SBINDIR" ] || ogRaiseError $OG_ERR_NOTFOUND "$1 $2 sbin" || return $? +for i in /usr/local/etc /etc; do + [ -d $MNTDIR/$i ] && ETCDIR=$i +done +[ -n "$ETCDIR" ] || ogRaiseError $OG_ERR_NOTFOUND "$1 $2 etc" || return $? +for i in $ETCDIR/rc.local $ETCDIR/rc.d/rc.local; do + [ -f $i ] && RCLOCAL=$i +done +[ -n "$RCLOCAL" ] || ogRaiseError $OG_ERR_NOTFOUND "$1 $2 rc.local" || return $? # Realizar la instalación en modo uso exclusivo. ogLock $1 $2 trap "ogUnlock $1 $2" 1 2 3 6 9 # Copiar cliente, generar fichero de configuración e incluir en el arranque. +<<<<<<< .mine +cp -a $CLIENTFILE $MNTDIR/$SBINDIR +cat > $MNTDIR/$ETCDIR/ogAdmLnxClient.cfg << EOT +ServidorAdm=$(ogGetServerIp) +PUERTO=2008 +IPLOCAL=$(ogGetIpAddress) +EOT +cp -a $MNTDIR/$RCLOCAL /tmp/rclocal +awk -v sbin=$SBINDIR -v etc=$ETCDIR \ + '{ if (/^#/) { print; } + else { + if (loc==0) { + printf "%s/ogAdmLnxClient -f %s/ogAdmLnxClient.cfg &\n",sbin,etc; + loc=1; } + print; } + }' /tmp/rclocal > $MNTDIR/$RCLOCAL +rm /tmp/rclocal +======= cp -a $CLIENTFILE "$WINDIR" ogAddCmd $1 $2 "$3" "ogAdmWinClient -install -s $(ogGetServerIp) -p 2008 -i $(ogGetIpAddress)" +>>>>>>> .r3706 ogUnlock $1 $2 } - diff --git a/client/shared/scripts/configureOs b/client/shared/scripts/configureOs index 773f89f3..cedb8dd9 100755 --- a/client/shared/scripts/configureOs +++ b/client/shared/scripts/configureOs @@ -58,8 +58,13 @@ case "$OSTYPE" in ogWindowsRegisterPartition $1 $2 C $1 $2 ogLoadHiveWindows $1 $2; ogSetWindowsChkdisk $OGWINCHKDISK; ogUpdateHiveWindows # Instalar cliente para Windows. +<<<<<<< .mine + ogInstallMiniSetup $1 $2 postconf.cmd + ogInstallWindowsClient $1 $2 postconf.cmd +======= ogInstallMiniSetup $1 $2 postconf.cmd ogInstallWindowsClient $1 $2 postconf.cmd +>>>>>>> .r3706 ;; Linux) ## Install and Configure Grub based on OS installed and Grub 1st stage location. |