source: client/engine/PostConf.lib @ d177da73

918-git-images-111dconfigfileconfigure-oglivegit-imageslgromero-new-oglivemainmaint-cronmount-efivarfsmultivmmultivm-ogboot-installerogClonningEngineogboot-installer-jenkinsoglive-ipv6test-python-scriptsticket-301ticket-50ticket-50-oldticket-577ticket-585ticket-611ticket-612ticket-693ticket-700ubu24tplunification2use-local-agent-oglivevarios-instalacionwebconsole3
Last change on this file since d177da73 was d177da73, checked in by jalonso <jonathan.alonso@…>, 12 years ago

#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

  • Property mode set to 100755
File size: 23.8 KB
Line 
1#!/bin/bash
2#/**
3#@file    PostConf.lib
4#@brief   Librería o clase PostConf
5#@class   PostConf
6#@brief   Funciones para la postconfiguración de sistemas operativos.
7#@version 1.0.4
8#@warning License: GNU GPLv3+
9#*/
10
11#/**
12<<<<<<< .mine
13=======
14#         ogAddCmd int_ndisk int_npartition str_filename str_commands
15#@brief   Añade comandos al cmd creado por ogInstalMiniSetup
16#@param   int_ndisk         nº de orden del disco
17#@param   int_npartition    nº de orden de la partición
18#@param   str_filename      nombre del fichero cmd (siempre se guardara en windows\system32\para que sea visible por el sistema
19#@param   str_commands      comando o comandos que se añadiran al fichero
20#@return 
21#@exception OG_ERR_FORMAT    Formato incorrecto.
22#@exception OG_ERR_PARTITION Tipo de partición desconocido o no se puede montar.
23#@version 1.0.2 - Nueva función
24#@author  Jonathan Alonso Martinez - Universidad Autonoma de Barcelona
25#@date    2011-06-29
26#@version 1.0.4 - Cambios en los parametros de entrada de la funcion
27#@author  Jonathan Alonso Martinez - Universidad Autonoma de Barcelona
28#@date    2012-04-16
29#*/ ##
30function ogAddCmd ()
31{
32local MOUNTPOINT CMDFILE
33# Si se solicita, mostrar ayuda.
34if [ "$*" == "help" ]; then
35    ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk int_npartition str_filename str_commands" \
36           "$FUNCNAME 1 1 filename.cmd command"
37    return
38fi
39# Error si no se reciben 4 parámetros.
40[ $# == 4 ] || return $(ogRaiseError $OG_ERR_FORMAT; echo $?)
41# Punto de montaje
42MOUNTPOINT="$(ogMount "$1" "$2")" || return $?
43# Comprobar que existe el fichero de comandos.
44CMDFILE="$(ogGetPath "$MOUNTPOINT/windows/system32")/$3"
45[ -n "$CMDFILE" ] || ogRaiseError $OG_ERR_NOTFOUND "$MOUNTPOINT/windows/system32/$3" || return $?
46
47# Concatenamos el comando en el fichero de comandos
48cat >> "$CMDFILE" << EOF
49$4
50EOF
51}
52
53
54#/**
55#         ogDomainScript int_ndisk int_npartition str_domain str_user str_password
56#@brief   Crea un script .vbs para unir al dominio una maquina windows y el comando adequado en el archivo cmd creado por ogInstallMiniSetup
57#@param   int_ndisk         nº de orden del disco
58#@param   int_npartition    nº de orden de la partición
59#@param   str_filename      nombre del fichero cmd donde deberemos introducir el comando de ejecutar el script vbs
60#@param   str_domain        dominio donde se quiere conectar
61#@param   str_user          usuario con privilegios para unir al dominio
62#@param   str_password      password del usuario con privilegios
63#@return 
64#@exception OG_ERR_FORMAT    Formato incorrecto.
65#@version 1.0.2 - Nueva función
66#@author  Jonathan Alonso Martinez - Universidad Autonoma de Barcelona
67#@date    2011-06-29
68#@version 1.0.4 - Cambios en los parametros de entrada de la funcion
69#@author  Jonathan Alonso Martinez - Universidad Autonoma de Barcelona
70#@date    2012-04-16
71#*/ ##
72function ogDomainScript ()
73{
74local CMDDIR
75# Si se solicita, mostrar ayuda.
76if [ "$*" == "help" ]; then
77    ogHelp "$FUNCNAME" \
78           "$FUNCNAME int_ndisk int_npartition str_filename str_domain str_user str_password" \
79           "$FUNCNAME 1 1 filename.cmd domain user password_user"
80    return
81fi
82# Error si no se reciben 6 parámetros.
83[ $# == 6 ] || return $(ogRaiseError $OG_ERR_FORMAT; echo $?)
84# Punto de montaje
85MOUNTPOINT="$(ogMount "$1" "$2")" || return $?
86# Comprobar que existe el directorio de comandos.
87CMDDIR=$(ogGetPath "$MOUNTPOINT/windows/system32")
88[ -n "$CMDDIR" ] || ogRaiseError $OG_ERR_NOTFOUND "$1/windows/system32" || return $?
89
90# Añadimos en el cmd que se ejecutara al arranque, el comando de ejecutar el script que añade al dominio.
91ogAddCmd $1 $2 "$3" "CSCRIPT joindomain.vbs"
92# Eliminamos el script porque tiene el usuario de administrador de dominio en claro
93ogAddCmd $1 $2 "$3" "DEL /Q C:\Windows\System32\joindomain.vbs"
94# Metemos unas claves de registro para que el dominio salga seleccionado por defecto
95ogAddCmd $1 $2 "$3" "REG ADD \"HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\" /v DefaultDomainName /t REG_SZ /d \"$4\" /f"
96
97# Creamos el archivo joindomain.vbs que nos introduce la maquina en el dominio
98cat > "$CMDDIR/joindomain.vbs" << EOF
99Const JOIN_DOMAIN = 1
100Const ACCT_CREATE = 2
101Const ACCT_DELETE = 4
102Const WIN9X_UPGRADE = 16
103Const DOMAIN_JOIN_IF_JOINED = 32
104Const JOIN_UNSECURE = 64
105Const MACHINE_PASSWORD_PASSED = 128
106Const DEFERRED_SPN_SET = 256
107Const INSTALL_INVOCATION = 262144
108
109strDomain = "$4"
110strUser = "$5"
111strPassword = "$6"
112
113Set objNetwork = CreateObject("WScript.Network")
114strComputer = objNetwork.ComputerName
115
116Set objComputer = GetObject("winmgmts:{impersonationLevel=Impersonate}!\\\" & _
117    strComputer & "\root\cimv2:Win32_ComputerSystem.Name='" & strComputer & "'")
118
119ReturnValue = objComputer.JoinDomainOrWorkGroup(strDomain, strPassword, _
120    strDomain & "\" & strUser, NULL, JOIN_DOMAIN + ACCT_CREATE)
121EOF
122}
123
124
125#/**
126#         ogInstallLinuxClient int_ndisk int_filesys
127#@brief   Instala el cliente OpenGnSys para sistemas operativos Linux.
128#@param   int_ndisk    nº de orden del disco
129#@param   int_filesys  nº de orden del sistema de archivos
130#@return  (nada)
131#@exception OG_ERR_FORMAT    Formato incorrecto.
132#@exception OG_ERR_NOTFOUND  Fichero o dispositivo no encontrado.
133#@exception OG_ERR_PARTITION Paritición o sistema de archivos incorrectos.
134#@exception OG_ERR_LOCKED    Sistema de archivos bloqueado.
135#@version 1.0.4 - Primera adaptación para OpenGnSys.
136#@author  Ramon Gomez, ETSII Universidad de Sevilla
137#@date    2012-04-10
138#*/ ##
139function ogInstallLinuxClient ()
140{
141# Variables locales.
142local PART MNTDIR CLIENTFILE i SBINDIR ETCDIR RCLOCAL
143# Si se solicita, mostrar ayuda.
144if [ "$*" == "help" ]; then
145    ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk int_filesys" \
146           "$FUNCNAME 1 1"
147    return
148fi
149
150# Error si no se reciben 2 parámetros.
151[ $# == 2 ] || ogRaiseError $OG_ERR_FORMAT || return $?
152# Obtener sistema de archvios.
153PART="$(ogDiskToDev $1 $2)" || return $?
154# Comprobar si el sistema de archivos no está bloqueado.
155MNTDIR=$(ogMount $1 $2) 2>/dev/null
156[ -n "$MNTDIR" ] || ogRaiseError OG_ERR_PARTITION "$1, $2" || return $?
157# Comprobar si existe el cliente y los directorios y ficheros destino.
158CLIENTFILE=$OGLIB/ogclient/ogAdmLnxClient
159[ -f $CLIENTFILE ] || ogRaiseError $OG_ERR_FOUND "$CLIENTFILE" || return $?
160for i in /usr/local/sbin /sbin /usr/sbin; do
161    [ -d $MNTDIR/$i ] && SBINDIR=$i
162done
163[ -n "$SBINDIR" ] || ogRaiseError $OG_ERR_NOTFOUND "$1 $2 sbin" || return $?
164for i in /usr/local/etc /etc; do
165    [ -d $MNTDIR/$i ] && ETCDIR=$i
166done
167[ -n "$ETCDIR" ] || ogRaiseError $OG_ERR_NOTFOUND "$1 $2 etc" || return $?
168for i in $ETCDIR/rc.local $ETCDIR/rc.d/rc.local; do
169    [ -f $i ] && RCLOCAL=$i
170done
171[ -n "$RCLOCAL" ] || ogRaiseError $OG_ERR_NOTFOUND "$1 $2 rc.local" || return $?
172# Realizar la instalación en modo uso exclusivo.
173ogLock $1 $2
174trap "ogUnlock $1 $2" 1 2 3 6 9
175# Copiar cliente, generar fichero de configuración e incluir en el arranque.
176cp -a $CLIENTFILE $MNTDIR/$SBINDIR
177cat > $MNTDIR/$ETCDIR/ogAdmLnxClient.cfg << EOT
178ServidorAdm=$(ogGetServerIp)
179PUERTO=2008
180IPLOCAL=$(ogGetIpAddress)
181EOT
182cp -a $MNTDIR/$RCLOCAL /tmp/rclocal
183awk -v sbin=$SBINDIR -v etc=$ETCDIR \
184        '{ if (/^#/) { print; }
185           else {
186                if (/ogAdmLnxClient/) { loc=1; }
187                if (loc==0) {
188                    printf "%s/ogAdmLnxClient -f %s/ogAdmLnxClient.cfg &\n",sbin,etc;
189                    loc=1; }
190                print; }
191        }' /tmp/rclocal > $MNTDIR/$RCLOCAL
192rm /tmp/rclocal
193ogUnlock $1 $2
194}
195
196
197#/**
198>>>>>>> .r3706
199#         ogInstallMiniSetup int_ndisk int_npartition str_filename [str_admuser str_admpassword bool_autologin [str_autouser str_autopassword] ]
200#@brief   Metafunción para instalar archivo que se ejecutará en el arranque de Windows.
201#@see     ogInstallFirstBoot ogInstallRunonce
202#*/ ##
203function ogInstallMiniSetup ()
204{
205case $# in
206    3)  # Ejecución en el primer arranque de la máquina.
207        ogInstallFirstBoot "$@" ;;
208    6|8) # Ejecución en el "runonce".
209        ogInstallRunonce "$@" ;;
210    *)  ogRaiseError $OG_ERR_FORMAT
211        exit $? ;;
212esac
213}
214
215
216#/**
217#         ogInstallFirstBoot int_ndisk int_npartition str_filename
218#@brief   Crea unas claves del registro y el archivo cmd que se ejecutara en el primer arranque estando la maquina en un estado bloqueado
219#@param   int_ndisk         nº de orden del disco
220#@param   int_npartition    nº de orden de la partición
221#@param   str_filename      nombre del archivo .cmd a ejecutar en el arranque
222#@return  (nada)
223#@exception OG_ERR_FORMAT    Formato incorrecto.
224#@note    El archivo estará en system32 y será visible por el sistema.
225#@version 1.0.2 - Nueva función
226#@author  Jonathan Alonso Martinez - Universidad Autonoma de Barcelona
227#@date    2011-06-29
228#@version 1.0.4 - Heredada de antigua función ogInstallMiniSetup.
229#@author  Jonathan Alonso Martinez - Universidad Autonoma de Barcelona
230#@date    2012-04-16
231#*/ ##
232function ogInstallFirstBoot ()
233{
234local MNTDIR DIR CMDDIR CMDFILE
235# Si se solicita, mostrar ayuda.
236if [ "$*" == "help" ]; then
237    ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk int_npartition str_filename" \
238           "$FUNCNAME 1 1 filename.cmd"
239    return
240fi
241# Error si no se reciben 2 parámetros.
242[ $# == 3 ] || return $(ogRaiseError $OG_ERR_FORMAT; echo $?)
243# Comprobar que existe el directorio del fichero de comandos.
244MNTDIR=$(ogMount "$1" "$2") || return $?
245for i in winnt windows; do
246    DIR=$(ogGetPath $MNTDIR/$i/system32)
247    [ -n "$DIR" ] && CMDDIR=$DIR
248done
249[ -n "$CMDDIR" ] || ogRaiseError $OG_ERR_NOTFOUND "$MNTDIR/windows/system32" || return $?
250CMDFILE="$CMDDIR/$3"
251
252# Creamos el archivo cmd y creamos un par de comandos para que una vez acabe la
253# postconfiguracion resetee el mini setup, sino lo haria en cada arranque.
254cat > "$CMDFILE" << EOF
255REG ADD HKLM\System\Setup /v SystemSetupInProgress /t REG_DWORD /d 0 /f
256REG ADD HKLM\System\Setup /v CmdLine /t REG_SZ /d "" /f
257EOF
258
259# Crear los valores de registro necesarios para que se haga la ejecución del .cmd al aranque.
260ogSetRegistryValue "$MNTDIR" SYSTEM "\Setup\SystemSetupInProgress" 1
261ogSetRegistryValue "$MNTDIR" SYSTEM "\Setup\SetupType" 4
262# Borrar y crear el valor para compatibilidad con algunos sistmeas.
263ogDeleteRegistryValue "$MNTDIR" SYSTEM "\Setup\CmdLine"
264ogAddRegistryValue "$MNTDIR" SYSTEM "\Setup\CmdLine"
265ogSetRegistryValue "$MNTDIR" SYSTEM "\Setup\CmdLine" "cmd.exe /c $(basename $CMDFILE)"
266}
267
268
269#/**
270#         ogInstallRunonce int_ndisk int_npartition str_filename str_adm_user str_adm_password bool_autologin [str_auto_user str_auto_password]
271#@brief   Crea el archivo cmd que se ejecutara en el runonce de un usuario administrador
272#@param   int_ndisk         nº de orden del disco
273#@param   int_npartition    nº de orden de la partición
274#@param   str_filename      nombre del archivo .cmd a ejecutar en el arranque (estara en system32 y sera visible por el sistema)
275#@param   str_adm_user      usuario administrador para hacer autologin y ejecutar el runonce
276#@param   str_adm_password  password del usuario administrador
277#@param   bool_autologin    si despues de la postconfiguracion queremos que la maquina haga autologin (0 o 1)
278#@param   str_auto_user     Usuario con el que queremos que haga autologin despues de la postconfiguracion
279#@param   str_auto_password Password del usuario que hara autologin
280#@return  (nada)
281#@exception OG_ERR_FORMAT    Formato incorrecto.
282#@version 1.0.2 - Nueva función
283#@author  Jonathan Alonso Martinez - Universidad Autonoma de Barcelona
284#@date    2011-06-29
285#@version 1.0.4 - Heredado de antigua función ogInstallMiniSetup
286#@author  Jonathan Alonso Martinez - Universidad Autonoma de Barcelona
287#@date    2012-04-16
288#*/ ##
289function ogInstallRunonce ()
290{
291local MOUNTPOINT DIR CMDDIR CMDFILE
292# Si se solicita, mostrar ayuda.
293if [ "$*" == "help" ]; then
294    ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk int_npartition str_filename str_adm_user str_adm_password bool_autologin [str_auto_user str_auto_password]" \
295           "$FUNCNAME 1 1 filename.cmd administrator passadmin 1 userauto passuserauto" \
296           "$FUNCNAME 1 1 filename.cmd administrator passadmin 0"
297    return
298fi
299# Error si no se reciben 6 u 8 parámetros.
300[ $# == 6 -o $# == 8 ] || return $(ogRaiseError $OG_ERR_FORMAT; echo $?)
301# Punto de montaje.
302MOUNTPOINT="$(ogGetPath "$1" "$2" /)"
303# Comprobar que existe el directorio del fichero de comandos.
304for i in winnt windows; do
305    DIR=$(ogGetPath $MOUNTPOINT/$i/system32)
306    [ -n "$DIR" ] && CMDDIR=$DIR
307done
308[ -n "$CMDDIR" ] || ogRaiseError $OG_ERR_NOTFOUND "$MOUNTPOINT/Windows/System32" || return $?
309CMDFILE="$CMDDIR/$3"
310
311if [ $6 == 0 ]; then
312    # Si no volem fer autologin despres de la postconfiguracio o indiquem a las claus de registre
313    cat > "$CMDFILE" << EOF
314DEL C:\ogboot.*
315REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v AutoAdminLogon /t REG_SZ /d 0 /f
316REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v DefaultUserName /t REG_SZ /d "" /f
317REG DELETE "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v DefaultPassword /f
318EOF
319else
320    # Si volem fer autologin despres de la postconfiguracio introduim l'informacio a les claus de registre
321    cat > "$CMDFILE" << EOF
322DEL C:\ogboot.*
323REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v AutoAdminLogon /t REG_SZ /d 1 /f
324REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v DefaultUserName /t REG_SZ /d "$7" /f
325REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v DefaultPassword /t REG_SZ /d "$8" /f
326EOF
327fi
328#Creamos las claves de registro necesarias para que meter el cmd en el runonce del usuario y este haga autologin
329ogAddRegistryValue $MOUNTPOINT software '\Microsoft\Windows\CurrentVersion\RunOnce\PostConfiguracion' 2>/dev/null
330ogSetRegistryValue $MOUNTPOINT software '\Microsoft\Windows\CurrentVersion\RunOnce\PostConfiguracion' "C:\windows\system32\\$3" 2>/dev/null
331ogSetRegistryValue $MOUNTPOINT software '\Microsoft\Windows NT\CurrentVersion\Winlogon\AutoAdminLogon' 1 2>/dev/null
332ogSetRegistryValue $MOUNTPOINT software '\Microsoft\Windows NT\CurrentVersion\Winlogon\DefaultUserName' "$4" 2>/dev/null
333ogAddRegistryValue $MOUNTPOINT software '\Microsoft\Windows NT\CurrentVersion\Winlogon\DefaultPassword' 2>/dev/null
334ogSetRegistryValue $MOUNTPOINT software '\Microsoft\Windows NT\CurrentVersion\Winlogon\DefaultPassword' "$5" 2>/dev/null
335}
336
337#/**
338#         ogAddCmd int_ndisk int_npartition str_filename str_commands
339#@brief   Añade comandos al cmd creado por ogInstalMiniSetup
340#@param   int_ndisk         nº de orden del disco
341#@param   int_npartition    nº de orden de la partición
342#@param   str_filename      nombre del fichero cmd (siempre se guardara en windows\system32\para que sea visible por el sistema
343#@param   str_commands      comando o comandos que se añadiran al fichero
344#@return 
345#@exception OG_ERR_FORMAT    Formato incorrecto.
346#@exception OG_ERR_PARTITION Tipo de partición desconocido o no se puede montar.
347#@version 1.0.2 - Nueva función
348#@author  Jonathan Alonso Martinez - Universidad Autonoma de Barcelona
349#@date    2011-06-29
350#@version 1.0.4 - Cambios en los parametros de entrada de la funcion
351#@author  Jonathan Alonso Martinez - Universidad Autonoma de Barcelona
352#@date    2012-04-16
353#*/ ##
354function ogAddCmd ()
355{
356local MOUNTPOINT CMDFILE
357# Si se solicita, mostrar ayuda.
358if [ "$*" == "help" ]; then
359    ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk int_npartition str_filename str_commands" \
360           "$FUNCNAME 1 1 filename.cmd command"
361    return
362fi
363# Error si no se reciben 4 parámetros.
364[ $# == 4 ] || return $(ogRaiseError $OG_ERR_FORMAT; echo $?)
365# Punto de montaje
366MOUNTPOINT="$(ogMount "$1" "$2")" || return $?
367# Comprobar que existe el fichero de comandos.
368CMDFILE="$(ogGetPath "$MOUNTPOINT/windows/system32")/$3"
369[ -n "$CMDFILE" ] || ogRaiseError $OG_ERR_NOTFOUND "$MOUNTPOINT/windows/system32/$3" || return $?
370
371# Concatenamos el comando en el fichero de comandos
372cat >> "$CMDFILE" << EOF
373$4
374EOF
375}
376
377
378#/**
379<<<<<<< .mine
380#         ogDomainScript int_ndisk int_npartition str_domain str_user str_password
381#@brief   Crea un script .vbs para unir al dominio una maquina windows y el comando adequado en el archivo cmd creado por ogInstallMiniSetup
382#@param   int_ndisk         nº de orden del disco
383#@param   int_npartition    nº de orden de la partición
384#@param   str_filename      nombre del fichero cmd donde deberemos introducir el comando de ejecutar el script vbs
385#@param   str_domain        dominio donde se quiere conectar
386#@param   str_user          usuario con privilegios para unir al dominio
387#@param   str_password      password del usuario con privilegios
388#@return 
389#@exception OG_ERR_FORMAT    Formato incorrecto.
390#@version 1.0.2 - Nueva función
391#@author  Jonathan Alonso Martinez - Universidad Autonoma de Barcelona
392#@date    2011-06-29
393#@version 1.0.4 - Cambios en los parametros de entrada de la funcion
394#@author  Jonathan Alonso Martinez - Universidad Autonoma de Barcelona
395#@date    2012-04-16
396#*/ ##
397function ogDomainScript ()
398{
399local CMDDIR
400# Si se solicita, mostrar ayuda.
401if [ "$*" == "help" ]; then
402    ogHelp "$FUNCNAME" \
403           "$FUNCNAME int_ndisk int_npartition str_filename str_domain str_user str_password" \
404           "$FUNCNAME 1 1 filename.cmd domain user password_user"
405    return
406fi
407# Error si no se reciben 6 parámetros.
408[ $# == 6 ] || return $(ogRaiseError $OG_ERR_FORMAT; echo $?)
409# Punto de montaje
410MOUNTPOINT="$(ogMount "$1" "$2")" || return $?
411# Comprobar que existe el directorio de comandos.
412CMDDIR=$(ogGetPath "$MOUNTPOINT/windows/system32")
413[ -n "$CMDDIR" ] || ogRaiseError $OG_ERR_NOTFOUND "$1/windows/system32" || return $?
414
415# Añadimos en el cmd que se ejecutara al arranque, el comando de ejecutar el script que añade al dominio.
416ogAddCmd $1 $2 "$3" "CSCRIPT joindomain.vbs"
417# Eliminamos el script porque tiene el usuario de administrador de dominio en claro
418ogAddCmd $1 $2 "$3" "DEL /Q C:\Windows\System32\joindomain.vbs"
419# Metemos unas claves de registro para que el dominio salga seleccionado por defecto
420ogAddCmd $1 $2 "$3" "REG ADD \"HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\" /v DefaultDomainName /t REG_SZ /d \"$4\" /f"
421
422# Creamos el archivo joindomain.vbs que nos introduce la maquina en el dominio
423cat > "$CMDDIR/joindomain.vbs" << EOF
424Const JOIN_DOMAIN = 1
425Const ACCT_CREATE = 2
426Const ACCT_DELETE = 4
427Const WIN9X_UPGRADE = 16
428Const DOMAIN_JOIN_IF_JOINED = 32
429Const JOIN_UNSECURE = 64
430Const MACHINE_PASSWORD_PASSED = 128
431Const DEFERRED_SPN_SET = 256
432Const INSTALL_INVOCATION = 262144
433
434strDomain = "$4"
435strUser = "$5"
436strPassword = "$6"
437
438Set objNetwork = CreateObject("WScript.Network")
439strComputer = objNetwork.ComputerName
440
441Set objComputer = GetObject("winmgmts:{impersonationLevel=Impersonate}!\\\" & _
442    strComputer & "\root\cimv2:Win32_ComputerSystem.Name='" & strComputer & "'")
443
444ReturnValue = objComputer.JoinDomainOrWorkGroup(strDomain, strPassword, _
445    strDomain & "\" & strUser, NULL, JOIN_DOMAIN + ACCT_CREATE)
446EOF
447}
448
449#/**
450#         ogInstallWindowsClient int_ndisk int_filesys
451=======
452#         ogInstallWindowsClient int_ndisk int_filesys str_filename
453>>>>>>> .r3706
454#@brief   Instala el cliente OpenGnSys para sistemas operativos Windows.
455<<<<<<< .mine
456#@param   int_ndisk         nº de orden del disco
457#@param   int_npartition    nº de orden de la partición
458#@param   str_filename      nombre del fichero cmd donde deberemos introducir el comando de ejecutar el script vbs
459=======
460#@param   int_ndisk     nº de orden del disco
461#@param   int_filesys   nº de orden del sistema de archivos
462#@param   str_filename  nombre del fichero cmd donde se introduce el comando de ejecutar el script VBS
463>>>>>>> .r3706
464#@return  (nada)
465#@exception OG_ERR_FORMAT    Formato incorrecto.
466#@exception OG_ERR_NOTFOUND  Fichero o dispositivo no encontrado.
467#@exception OG_ERR_PARTITION Paritición o sistema de archivos incorrectos.
468#@exception OG_ERR_LOCKED    Sistema de archivos bloqueado.
469#@version 1.0.4 - Primera adaptación para OpenGnSys.
470#@author  Ramon Gomez, ETSII Universidad de Sevilla
471#@date    2012-04-11
472#@version 1.0.5 - Cambios en los parametros de entrada y funcionamiento de la funcion
473#@author  Jonathan Alonso Martinez - Universidad Autonoma de Barcelona
474#@date    2013-02-12
475#*/ ##
476
477function ogInstallWindowsClient ()
478{
479# Variables locales.
480local PART MNTDIR CLIENTFILE i SBINDIR ETCDIR RCLOCAL
481# Si se solicita, mostrar ayuda.
482if [ "$*" == "help" ]; then
483    ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk int_filesys str_filename" \
484           "$FUNCNAME 1 1 postconf.cmd"
485    return
486fi
487
488<<<<<<< .mine
489# Error si no se reciben 2 parámetros.
490[ $# == 3 ] || ogRaiseError $OG_ERR_FORMAT || return $?
491=======
492# Error si no se reciben 3 parámetros.
493[ $# == 3 ] || ogRaiseError $OG_ERR_FORMAT || return $?
494>>>>>>> .r3706
495# Obtener sistema de archvios.
496PART="$(ogDiskToDev $1 $2)" || return $?
497# Comprobar si el sistema de archivos no está bloqueado.
498MNTDIR=$(ogMount $1 $2) 2>/dev/null
499[ -n "$MNTDIR" ] || ogRaiseError OG_ERR_PARTITION "$1, $2" || return $?
500# Comprobar si existe el cliente y los directorios y ficheros destino.
501CLIENTFILE=$OGLIB/ogclient/ogAdmWinClient.exe
502[ -f $CLIENTFILE ] || ogRaiseError $OG_ERR_FOUND "$CLIENTFILE" || return $?
503for i in winnt windows; do
504    DIR=$(ogGetPath $MNTDIR/$i)
505    [ -n "$DIR" ] && WINDIR=$DIR
506done
507[ -n "$WINDIR " ] || ogRaiseError $OG_ERR_NOTFOUND "$1 $2 windows" || return $?
508# Copiar cliente e incluir en el fichero de configuracion dado que instale el cliente en el arranque.
509cp -a $CLIENTFILE "$WINDIR"
510ogAddCmd $1 $2 $3 "ogAdmWinClient -install -s $(ogGetServerIp) -p 2008 -i $(ogGetIpAddress)"
511}
512
513
514#/**
515#         ogInstallLinuxClient int_ndisk int_filesys
516#@brief   Instala el cliente OpenGnSys para sistemas operativos Linux.
517#@param   int_ndisk    nº de orden del disco
518#@param   int_filesys  nº de orden del sistema de archivos
519#@return  (nada)
520#@exception OG_ERR_FORMAT    Formato incorrecto.
521#@exception OG_ERR_NOTFOUND  Fichero o dispositivo no encontrado.
522#@exception OG_ERR_PARTITION Paritición o sistema de archivos incorrectos.
523#@exception OG_ERR_LOCKED    Sistema de archivos bloqueado.
524#@version 1.0.4 - Primera adaptación para OpenGnSys.
525#@author  Ramon Gomez, ETSII Universidad de Sevilla
526#@date    2012-04-10
527#*/ ##
528function ogInstallLinuxClient ()
529{
530# Variables locales.
531local PART MNTDIR CLIENTFILE i SBINDIR ETCDIR RCLOCAL
532# Si se solicita, mostrar ayuda.
533if [ "$*" == "help" ]; then
534    ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk int_filesys" \
535           "$FUNCNAME 1 1"
536    return
537fi
538
539# Error si no se reciben 2 parámetros.
540[ $# == 2 ] || ogRaiseError $OG_ERR_FORMAT || return $?
541# Obtener sistema de archvios.
542PART="$(ogDiskToDev $1 $2)" || return $?
543# Comprobar si el sistema de archivos no está bloqueado.
544MNTDIR=$(ogMount $1 $2) 2>/dev/null
545[ -n "$MNTDIR" ] || ogRaiseError OG_ERR_PARTITION "$1, $2" || return $?
546# Comprobar si existe el cliente y los directorios y ficheros destino.
547CLIENTFILE=$OGLIB/ogclient/ogAdmLnxClient
548[ -f $CLIENTFILE ] || ogRaiseError $OG_ERR_FOUND "$CLIENTFILE" || return $?
549for i in /usr/local/sbin /sbin /usr/sbin; do
550    [ -d $MNTDIR/$i ] && SBINDIR=$i
551done
552[ -n "$SBINDIR" ] || ogRaiseError $OG_ERR_NOTFOUND "$1 $2 sbin" || return $?
553for i in /usr/local/etc /etc; do
554    [ -d $MNTDIR/$i ] && ETCDIR=$i
555done
556[ -n "$ETCDIR" ] || ogRaiseError $OG_ERR_NOTFOUND "$1 $2 etc" || return $?
557for i in $ETCDIR/rc.local $ETCDIR/rc.d/rc.local; do
558    [ -f $i ] && RCLOCAL=$i
559done
560[ -n "$RCLOCAL" ] || ogRaiseError $OG_ERR_NOTFOUND "$1 $2 rc.local" || return $?
561# Realizar la instalación en modo uso exclusivo.
562ogLock $1 $2
563trap "ogUnlock $1 $2" 1 2 3 6 9
564# Copiar cliente, generar fichero de configuración e incluir en el arranque.
565<<<<<<< .mine
566cp -a $CLIENTFILE $MNTDIR/$SBINDIR
567cat > $MNTDIR/$ETCDIR/ogAdmLnxClient.cfg << EOT
568ServidorAdm=$(ogGetServerIp)
569PUERTO=2008
570IPLOCAL=$(ogGetIpAddress)
571EOT
572cp -a $MNTDIR/$RCLOCAL /tmp/rclocal
573awk -v sbin=$SBINDIR -v etc=$ETCDIR \
574        '{ if (/^#/) { print; }
575           else {
576                if (loc==0) {
577                    printf "%s/ogAdmLnxClient -f %s/ogAdmLnxClient.cfg &\n",sbin,etc;
578                    loc=1; }
579                print; }
580        }' /tmp/rclocal > $MNTDIR/$RCLOCAL
581rm /tmp/rclocal
582=======
583cp -a $CLIENTFILE "$WINDIR"
584ogAddCmd $1 $2 "$3" "ogAdmWinClient -install -s $(ogGetServerIp) -p 2008 -i $(ogGetIpAddress)"
585>>>>>>> .r3706
586ogUnlock $1 $2
587}
Note: See TracBrowser for help on using the repository browser.