summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorramon <ramongomez@us.es>2012-06-11 09:28:01 +0000
committerramon <ramongomez@us.es>2012-06-11 09:28:01 +0000
commitd81c0cbb2f73ec74858b5f986618c21ab70e8740 (patch)
treeafb9c4723d0751bf59fc1045c6d559804c34732f
parentfcc63690858d8319536b5f58fd40544537d5e765 (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-xclient/engine/PostConf.lib256
-rwxr-xr-xclient/engine/PostConfEAC.lib313
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
-}
-