source: client/engine/PostConf.lib @ 1c23e33

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-instalacion
Last change on this file since 1c23e33 was 05bbb82, checked in by adv <adv@…>, 7 years ago

#853 Adapting PostConf?.lib library for doxygen

  • Property mode set to 100755
File size: 26.2 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.1.0
8#@warning License: GNU GPLv3+
9#*/
10
11
12#/**
13#         ogCleanOs int_ndisk int_nfilesys
14#@brief   Elimina los archivos que no son necesarios en el sistema operativo.
15#@param   int_ndisk      nº de orden del disco
16#@param   int_nfilesys   nº de orden del sistema de archivos
17#@exception OG_ERR_FORMAT    Formato incorrecto.
18#@exception OG_ERR_NOTFOUND  Disco o particion no corresponden con un dispositivo.
19#@exception OG_ERR_PARTITION Partición desconocida o no accesible.
20#@note    Antes incluido en la funcion ogReduceFs
21#@author  Irina Gomez. Universidad de Sevilla.
22#@return  (nada)
23#@date    2014-10-27
24#*/ ##
25function ogCleanOs ()
26{
27
28# Si se solicita, mostrar ayuda.
29if [ "$*" == "help" ]; then
30    ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk int_nfilesys" \
31           "$FUNCNAME 1 1"
32    return
33fi
34
35# Error si no se reciben 2 parámetros.
36[ $# == 2 ] || ogRaiseError $OG_ERR_FORMAT "$FUNCNAME int_ndisk int_nfilesys" || return $?
37
38case "$(ogGetOsType $1 $2)" in
39    Linux)
40        # Borramos los ficheros de dispositivos y los temporales.
41        ogCleanLinuxDevices $1 $2
42        rm -rf $(ogMount $1 $2)/tmp/*   #*/ Comentario Doxygen
43        ;;
44    Windows)
45        # Borrar ficheros de hibernación y paginación de Windows.
46        [ -n "$(ogGetPath $1 $2 pagefile.sys)" ] && ogDeleteFile $1 $2 pagefile.sys
47        [ -n "$(ogGetPath $1 $2 hiberfil.sys)" ] && ogDeleteFile $1 $2 hiberfil.sys
48        [ -n "$(ogGetPath $1 $2 swapfile.sys)" ] && ogDeleteFile $1 $2 swapfile.sys
49        ;;
50esac
51
52}
53
54
55
56#/**
57#         ogInstallMiniSetup int_ndisk int_npartition str_filename [str_admuser str_admpassword bool_autologin [str_autouser str_autopassword] ]
58#@brief   Metafunción para instalar archivo que se ejecutará en el arranque de Windows.
59#@see     ogInstallFirstBoot ogInstallRunonce
60#*/ ##
61function ogInstallMiniSetup ()
62{
63# Si se solicita, mostrar ayuda.
64if [ "$*" == "help" ]; then
65    ogHelp "$FUNCNAME" "$MSG_SEE ogInstallFirstBoot ogInstallRunonce"
66    return
67fi
68case $# in
69    3)  # Ejecución en el primer arranque de la máquina.
70        ogInstallFirstBoot "$@" ;;
71    6|8) # Ejecución en el "runonce".
72        ogInstallRunonce "$@" ;;
73    *)  ogRaiseError $OG_ERR_FORMAT
74        return $? ;;
75esac
76}
77
78
79#/**
80#         ogInstallFirstBoot int_ndisk int_npartition str_filename
81#@brief   Crea unas claves del registro y el archivo cmd que se ejecutara en el primer arranque estando la maquina en un estado bloqueado
82#@param   int_ndisk         nº de orden del disco
83#@param   int_npartition    nº de orden de la partición
84#@param   str_filename      nombre del archivo .cmd a ejecutar en el arranque
85#@return  (nada)
86#@exception OG_ERR_FORMAT    Formato incorrecto.
87#@note    El archivo estará en system32 y será visible por el sistema.
88#@version 1.0.2 - Nueva función
89#@author  Jonathan Alonso Martinez - Universidad Autonoma de Barcelona
90#@date    2011-06-29
91#@version 1.0.4 - Heredada de antigua función ogInstallMiniSetup.
92#@author  Jonathan Alonso Martinez - Universidad Autonoma de Barcelona
93#@date    2012-04-16
94#*/ ##
95function ogInstallFirstBoot ()
96{
97local MNTDIR DIR CMDDIR CMDFILE
98# Si se solicita, mostrar ayuda.
99if [ "$*" == "help" ]; then
100    ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk int_npartition str_filename" \
101           "$FUNCNAME 1 1 filename.cmd"
102    return
103fi
104# Error si no se reciben 3 parámetros.
105[ $# == 3 ] || return $(ogRaiseError $OG_ERR_FORMAT; echo $?)
106# Comprobar que existe el directorio del fichero de comandos.
107MNTDIR=$(ogMount "$1" "$2") || return $?
108for i in winnt windows; do
109    DIR=$(ogGetPath $MNTDIR/$i/system32)
110    [ -n "$DIR" ] && CMDDIR=$DIR
111done
112[ -n "$CMDDIR" ] || ogRaiseError $OG_ERR_NOTFOUND "$MNTDIR/windows/system32" || return $?
113CMDFILE="$CMDDIR/$3"
114
115# Creamos el archivo cmd y creamos un par de comandos para que una vez acabe la
116# postconfiguracion resetee el mini setup, sino lo haria en cada arranque.
117cat > "$CMDFILE" << EOF
118REG ADD HKLM\System\Setup /v SystemSetupInProgress /t REG_DWORD /d 0 /f
119REG ADD HKLM\System\Setup /v CmdLine /t REG_SZ /d "" /f
120EOF
121
122# Crear los valores de registro necesarios para que se haga la ejecución del .cmd al aranque.
123ogSetRegistryValue "$MNTDIR" SYSTEM "\Setup\SystemSetupInProgress" 1
124ogSetRegistryValue "$MNTDIR" SYSTEM "\Setup\SetupType" 4
125#ogDeleteRegistryValue "$MNTDIR" SYSTEM "\Setup\CmdLine"
126ogAddRegistryValue "$MNTDIR" SYSTEM "\Setup\CmdLine"
127ogSetRegistryValue "$MNTDIR" SYSTEM "\Setup\CmdLine" "cmd.exe /c $(basename $CMDFILE)"
128}
129
130
131#/**
132#         ogInstallRunonce int_ndisk int_npartition str_filename str_adm_user str_adm_password bool_autologin [str_auto_user str_auto_password]
133#@brief   Crea el archivo cmd que se ejecutara en el runonce de un usuario administrador
134#@param   int_ndisk         nº de orden del disco
135#@param   int_npartition    nº de orden de la partición
136#@param   str_filename      nombre del archivo .cmd a ejecutar en el arranque (estara en system32 y sera visible por el sistema)
137#@param   str_adm_user      usuario administrador para hacer autologin y ejecutar el runonce
138#@param   str_adm_password  password del usuario administrador
139#@param   bool_autologin    si despues de la postconfiguracion queremos que la maquina haga autologin (0 o 1)
140#@param   str_auto_user     Usuario con el que queremos que haga autologin despues de la postconfiguracion
141#@param   str_auto_password Password del usuario que hara autologin
142#@return  (nada)
143#@exception OG_ERR_FORMAT    Formato incorrecto.
144#@version 1.0.2 - Nueva función
145#@author  Jonathan Alonso Martinez - Universidad Autonoma de Barcelona
146#@date    2011-06-29
147#@version 1.0.4 - Heredado de antigua función ogInstallMiniSetup
148#@author  Jonathan Alonso Martinez - Universidad Autonoma de Barcelona
149#@date    2012-04-16
150#@version 1.1.0 - Resuelve problemas a partir de Windows 10
151#@author  Carmelo Cabezuelo Aguilar - Universidad Politécnica de Valencia
152#@date    2018-02-20
153#*/ ##
154function ogInstallRunonce ()
155{
156local MOUNTPOINT DIR CMDDIR CMDFILE
157# Si se solicita, mostrar ayuda.
158if [ "$*" == "help" ]; then
159    ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk int_npartition str_filename str_adm_user str_adm_password bool_autologin [str_auto_user str_auto_password]" \
160           "$FUNCNAME 1 1 filename.cmd administrator passadmin 1 userauto passuserauto" \
161           "$FUNCNAME 1 1 filename.cmd administrator passadmin 0"
162    return
163fi
164# Error si no se reciben 6 u 8 parámetros.
165[ $# == 6 -o $# == 8 ] || return $(ogRaiseError $OG_ERR_FORMAT; echo $?)
166# Punto de montaje.
167MOUNTPOINT="$(ogGetPath "$1" "$2" /)"
168# Comprobar que existe el directorio del fichero de comandos.
169for i in winnt windows; do
170    DIR=$(ogGetPath $MOUNTPOINT/$i/system32)
171    [ -n "$DIR" ] && CMDDIR=$DIR
172done
173[ -n "$CMDDIR" ] || ogRaiseError $OG_ERR_NOTFOUND "$MOUNTPOINT/Windows/System32" || return $?
174CMDFILE="$CMDDIR/$3"
175
176if [ $6 == 0 ]; then
177    # Si no queremos hacer autologin despues de la postconfiguracion lo indicamos en las claves de registro
178    cat > "$CMDFILE" << EOF
179DEL C:\ogboot.*
180REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v AutoAdminLogon /t REG_SZ /d 0 /f
181REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v DefaultUserName /t REG_SZ /d "" /f
182REG DELETE "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v DefaultPassword /f
183EOF
184else
185    # Si queremos hacer autologin despues de la postconfiguracion introducimos la informacion en las claves de registro
186    cat > "$CMDFILE" << EOF
187DEL C:\ogboot.*
188REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v AutoAdminLogon /t REG_SZ /d 1 /f
189REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v DefaultUserName /t REG_SZ /d "$7" /f
190REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v DefaultPassword /t REG_SZ /d "$8" /f
191EOF
192fi
193#Creamos las claves de registro necesarias para que meter el cmd en el runonce del usuario y este haga autologin
194ogAddRegistryValue $MOUNTPOINT software '\Microsoft\Windows\CurrentVersion\RunOnce\PostConfiguracion' 2>/dev/null
195ogSetRegistryValue $MOUNTPOINT software '\Microsoft\Windows\CurrentVersion\RunOnce\PostConfiguracion' "C:\windows\system32\\$3" 2>/dev/null
196ogAddRegistryValue $MOUNTPOINT software '\Microsoft\Windows NT\CurrentVersion\Winlogon\AutoAdminLogon' 2>/dev/null
197ogSetRegistryValue $MOUNTPOINT software '\Microsoft\Windows NT\CurrentVersion\Winlogon\AutoAdminLogon' 1 2>/dev/null
198ogAddRegistryValue $MOUNTPOINT software '\Microsoft\Windows NT\CurrentVersion\Winlogon\DefaultUserName' 2>/dev/null
199ogSetRegistryValue $MOUNTPOINT software '\Microsoft\Windows NT\CurrentVersion\Winlogon\DefaultUserName' "$4" 2>/dev/null
200ogAddRegistryValue $MOUNTPOINT software '\Microsoft\Windows NT\CurrentVersion\Winlogon\DefaultDomainName' 2>/dev/null
201ogSetRegistryValue $MOUNTPOINT software '\Microsoft\Windows NT\CurrentVersion\Winlogon\DefaultDomainName' ".\\" 2>/dev/null
202ogAddRegistryValue $MOUNTPOINT software '\Microsoft\Windows NT\CurrentVersion\Winlogon\DefaultPassword' 2>/dev/null
203ogSetRegistryValue $MOUNTPOINT software '\Microsoft\Windows NT\CurrentVersion\Winlogon\DefaultPassword' "$5" 2>/dev/null
204ogDeleteRegistryValue $MOUNTPOINT software '\Microsoft\Windows NT\CurrentVersion\Winlogon\ForceAutoLockOnLogon' 2>/dev/null 
205ogDeleteRegistryValue $MOUNTPOINT software '\Microsoft\Windows NT\CurrentVersion\Winlogon\AutoLogonCount' 2>/dev/null
206}
207
208#/**
209#         ogAddCmd int_ndisk int_npartition str_filename str_commands
210#@brief   Añade comandos al cmd creado por ogInstalMiniSetup
211#@param   int_ndisk         nº de orden del disco
212#@param   int_npartition    nº de orden de la partición
213#@param   str_filename      nombre del fichero cmd (siempre se guardara en windows\system32\para que sea visible por el sistema
214#@param   str_commands      comando o comandos que se añadiran al fichero
215#@return 
216#@exception OG_ERR_FORMAT    Formato incorrecto.
217#@exception OG_ERR_PARTITION Tipo de partición desconocido o no se puede montar.
218#@version 1.0.2 - Nueva función
219#@author  Jonathan Alonso Martinez - Universidad Autonoma de Barcelona
220#@date    2011-06-29
221#@version 1.0.4 - Cambios en los parametros de entrada de la funcion
222#@author  Jonathan Alonso Martinez - Universidad Autonoma de Barcelona
223#@date    2012-04-16
224#*/ ##
225function ogAddCmd ()
226{
227local MOUNTPOINT CMDFILE
228# Si se solicita, mostrar ayuda.
229if [ "$*" == "help" ]; then
230    ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk int_npartition str_filename str_commands" \
231           "$FUNCNAME 1 1 filename.cmd command"
232    return
233fi
234# Error si no se reciben 4 parámetros.
235[ $# == 4 ] || return $(ogRaiseError $OG_ERR_FORMAT; echo $?)
236# Punto de montaje
237MOUNTPOINT="$(ogMount "$1" "$2")" || return $?
238# Crear fichero de comandos, si no existe.
239CMDFILE="$(ogGetPath "$MOUNTPOINT/windows/system32")/$3"
240[ -n "$CMDFILE" ] || ogInstallMiniSetup "$1" "$2" "$3"
241[ -n "$CMDFILE" ] || ogRaiseError $OG_ERR_NOTFOUND "$MOUNTPOINT/windows/system32/$3" || return $?
242
243# Concatenamos el comando en el fichero de comandos
244cat >> "$CMDFILE" << EOF
245$4
246EOF
247}
248
249
250#/**
251#         ogDomainScript int_ndisk int_npartition str_domain str_user str_password
252#@brief   Crea un script .vbs para unir al dominio una maquina windows y el comando adequado en el archivo cmd creado por ogInstallMiniSetup
253#@param   int_ndisk         nº de orden del disco
254#@param   int_npartition    nº de orden de la partición
255#@param   str_filename      nombre del fichero cmd donde deberemos introducir el comando de ejecutar el script vbs
256#@param   str_domain        dominio donde se quiere conectar
257#@param   str_user          usuario con privilegios para unir al dominio
258#@param   str_password      password del usuario con privilegios
259#@return 
260#@exception OG_ERR_FORMAT    Formato incorrecto.
261#@version 1.0.2 - Nueva función
262#@author  Jonathan Alonso Martinez - Universidad Autonoma de Barcelona
263#@date    2011-06-29
264#@version 1.0.4 - Cambios en los parametros de entrada de la funcion
265#@author  Jonathan Alonso Martinez - Universidad Autonoma de Barcelona
266#@date    2012-04-16
267#*/ ##
268function ogDomainScript ()
269{
270local CMDDIR
271# Si se solicita, mostrar ayuda.
272if [ "$*" == "help" ]; then
273    ogHelp "$FUNCNAME" \
274           "$FUNCNAME int_ndisk int_npartition str_filename str_domain str_user str_password" \
275           "$FUNCNAME 1 1 filename.cmd domain user password_user"
276    return
277fi
278# Error si no se reciben 6 parámetros.
279[ $# == 6 ] || return $(ogRaiseError $OG_ERR_FORMAT; echo $?)
280# Punto de montaje
281MOUNTPOINT="$(ogMount "$1" "$2")" || return $?
282# Comprobar que existe el directorio de comandos.
283CMDDIR=$(ogGetPath "$MOUNTPOINT/windows/system32")
284[ -n "$CMDDIR" ] || ogRaiseError $OG_ERR_NOTFOUND "$1/windows/system32" || return $?
285
286# Añadimos en el cmd que se ejecutara al arranque, el comando de ejecutar el script que añade al dominio.
287ogAddCmd $1 $2 "$3" "CSCRIPT joindomain.vbs"
288# Eliminamos el script porque tiene el usuario de administrador de dominio en claro
289ogAddCmd $1 $2 "$3" "DEL /Q C:\Windows\System32\joindomain.vbs"
290# Metemos unas claves de registro para que el dominio salga seleccionado por defecto
291ogAddCmd $1 $2 "$3" "REG ADD \"HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\" /v DefaultDomainName /t REG_SZ /d \"$4\" /f"
292
293# Creamos el archivo joindomain.vbs que nos introduce la maquina en el dominio
294cat > "$CMDDIR/joindomain.vbs" << EOF
295Const JOIN_DOMAIN = 1
296Const ACCT_CREATE = 2
297Const ACCT_DELETE = 4
298Const WIN9X_UPGRADE = 16
299Const DOMAIN_JOIN_IF_JOINED = 32
300Const JOIN_UNSECURE = 64
301Const MACHINE_PASSWORD_PASSED = 128
302Const DEFERRED_SPN_SET = 256
303Const INSTALL_INVOCATION = 262144
304
305strDomain = "$4"
306strUser = "$5"
307strPassword = "$6"
308
309Set objNetwork = CreateObject("WScript.Network")
310strComputer = objNetwork.ComputerName
311
312Set objComputer = GetObject("winmgmts:{impersonationLevel=Impersonate}!\\\" & _
313    strComputer & "\root\cimv2:Win32_ComputerSystem.Name='" & strComputer & "'")
314
315ReturnValue = objComputer.JoinDomainOrWorkGroup(strDomain, strPassword, _
316    strDomain & "\" & strUser, NULL, JOIN_DOMAIN + ACCT_CREATE)
317EOF
318
319#*/ " (comentario Doxygen)
320
321
322}
323
324
325### PRUEBAS.
326
327#/**
328#         ogConfigureOgagent int_ndisk int_filesys
329#@brief   Modifica el fichero de configuración del nuevo agente OGAent para sistemas operativos.
330#@param   int_ndisk    nº de orden del disco
331#@param   int_filesys  nº de orden del sistema de archivos
332#@return  (nada)
333#@exception OG_ERR_FORMAT    Formato incorrecto.
334#@exception OG_ERR_NOTFOUND  Fichero o dispositivo no encontrado.
335#@exception OG_ERR_LOCKED    Sistema de archivos bloqueado.
336#@version 1.1.0 - Primera adaptación para OpenGnsys.
337#@author  Ramon Gomez, ETSII Universidad de Sevilla
338#@date    2016-07-15
339#*/ ##
340function ogConfigureOgagent ()
341{
342# Variables locales.
343local MNTDIR AGENTDIR CFGFILE
344# Si se solicita, mostrar ayuda.
345if [ "$*" == "help" ]; then
346    ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk int_filesys" \
347           "$FUNCNAME 1 1"
348    return
349fi
350
351# Error si no se reciben 2 parámetros.
352[ $# == 2 ] || ogRaiseError $OG_ERR_FORMAT || return $?
353# Obtener sistema de archvios.
354MNTDIR=$(ogMount $1 $2) || return $?
355
356# Comprobar si existe el fichero de configuración de OGAgent.
357for AGENTDIR in usr/share/OGAgent "Program Files/OGAgent" "Program Files (x86)/OGAgent" Applications/OGAgent.app; do
358    CFGFILE=$(ogGetPath "$MNTDIR/$AGENTDIR/cfg/ogagent.cfg")
359    [ -n "$CFGFILE" ] && break
360done
361[ -n "$CFGFILE" ] || ogRaiseError $OG_ERR_NOTFOUND "ogagent.cfg" || return $?
362# Parchear dirección del servidor OpenGnsys en el fichero de configuración de OGAgent.
363sed -i "0,/remote=/ s,remote=.*,remote=https://$(ogGetServerIp)/opengnsys/rest/," "$CFGFILE"
364}
365
366
367#/**
368#         ogInstallLaunchDaemon int_ndisk int_nfilesys str_filename
369#@brief   Instala archivo que se ejecutará en el arranque de macOS.
370#@param   int_ndisk         nº de orden del disco
371#@param   int_nfilesys      nº de orden del sistema de archivos
372#@param   str_filename      nombre del script
373#return   (nada)
374#@exception OG_ERR_FORMAT    Formato incorrecto.
375#@exception OG_ERR_NOTFOUND  Fichero o directorio no encontrado.
376#@npte    Crea ficheros de configuración /Library/LaunchDaemon/es.opengnsys.Script.plist.
377#@version 1.0.6 - Primera versión para OpenGnSys.
378#@author  Ramon Gomez, ETSII Universidad de Sevilla
379#@date    2014-10-06
380#*/ ##
381function ogInstallLaunchDaemon ()
382{
383# Variables locales.
384local LAUNCHDIR SCRIPTDIR
385# Si se solicita, mostrar ayuda.
386if [ "$*" == "help" ]; then
387    ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk int_filesys str_scriptname" \
388           "$FUNCNAME 1 2 postconf"
389    return
390fi
391
392# Error si no se reciben 3 parámetros.
393[ $# == 3 ] || ogRaiseError $OG_ERR_FORMAT || return $?
394# Comprobar directorios.
395LAUNCHDIR=$(ogGetPath $1 $2 /Library/LaunchDaemons)
396[ -n "$LAUNCHDIR" ] || ogRaiseError $OG_ERR_NOTFOUND "$1 $2 /Library/LaunchDaemons" || return $?
397SCRIPTDIR=$(ogGetPath $1 $2 /usr/share)
398[ -n "$SCRIPTDIR" ] || ogRaiseError $OG_ERR_NOTFOUND "$1 $2 /usr/share" || return $?
399
400# Crear fichero de configuración del servicio de arranque.
401cat << EOT $LAUNCHDIR/es.opengnsys.$3.plist
402<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
403<plist version="1.0">
404        <dict>
405                <key>Label</key>
406                <string>es.opengnsys.$3</string>
407                <key>ProgramArguments</key>
408                <array>
409                        <string>$SCRIPTDIR/$3.sh</string>
410                </array>
411                <key>RunAtLoad</key>
412                <true/>
413                <key>StandardOutPath</key>
414                <string>/var/log/$3.log</string>
415                <key>StandardErrorPath</key>
416                <string>/var/log/$3.err</string>
417                <true/>
418        </dict>
419</plist>
420EOT
421
422# Crear un fichero de script vacío.
423rm -f $SCRIPTDIR/$3.sh
424touch $SCRIPTDIR/$3.sh
425chmod +x $SCRIPTDIR/$3.sh
426}
427
428
429### PRUEBAS.
430
431#/**
432#         ogAddToLaunchDaemon int_ndisk int_nfilesys str_filename str_commands
433#@brief   Añade comandos al script creado por ogInstalLaunchDaemon.
434#@param   int_ndisk         nº de orden del disco
435#@param   int_nfilesys      nº de orden del sistema de archivos
436#@param   str_filename      nombre del script (siempre se guardará en /usr/share para que sea visible por el sistema
437#@param   str_commands      comando o comandos que se añadiran al fichero
438#return   (nada)
439#@exception OG_ERR_FORMAT    Formato incorrecto.
440#@exception OG_ERR_NOTFOUND  Fichero o directorio no encontrado.
441#@version 1.0.6 - Primera versión para OpenGnSys.
442#@author  Ramon Gomez, ETSII Universidad de Sevilla
443#@date    2014-10-06
444#*/ ##
445function ogAddToLaunchDaemon ()
446{
447# Variables locales.
448local SCRIPTFILE
449# Si se solicita, mostrar ayuda.
450if [ "$*" == "help" ]; then
451    ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk int_filesys str_scriptname" \
452           "$FUNCNAME 1 2 postconf \"diskutil enableJournal disk0s2\""
453    return
454fi
455
456# Error si no se reciben 4 parámetros.
457[ $# == 4 ] || ogRaiseError $OG_ERR_FORMAT || return $?
458# Comprobar que existe el fichero de comandos.
459SCRIPTFILE=$(ogGetPath $1 $2 "/usr/share/$3.sh")
460[ -n "$SCRIPTFILE" ] || ogRaiseError $OG_ERR_NOTFOUND "$1 $2 /usr/share/$3" || return $?
461
462# Concatenamos el comando en el fichero de comandos
463cat >> "$SCRIPTFILE" << EOT
464$4
465EOT
466}
467
468
469#/**
470#         ogInstallLinuxClient int_ndisk int_filesys
471#@brief   Instala el cliente OpenGnSys para sistemas operativos GNU/Linux.
472#@param   int_ndisk    nº de orden del disco
473#@param   int_filesys  nº de orden del sistema de archivos
474#@return  (nada)
475#@exception OG_ERR_FORMAT    Formato incorrecto.
476#@exception OG_ERR_NOTFOUND  Fichero o dispositivo no encontrado.
477#@exception OG_ERR_PARTITION Paritición o sistema de archivos incorrectos.
478#@exception OG_ERR_LOCKED    Sistema de archivos bloqueado.
479#@version 1.0.4 - Primera adaptación para OpenGnSys.
480#@author  Ramon Gomez, ETSII Universidad de Sevilla
481#@date    2012-04-10
482#@version 1.0.5 - Evitar duplicidad de instalación del cliente.
483#@author  Ramon Gomez, ETSII Universidad de Sevilla
484#@date    2014-03-06
485#*/ ##
486function ogInstallLinuxClient ()
487{
488# Variables locales.
489local MNTDIR CLIENTFILE i SBINDIR ETCDIR RCLOCAL
490# Si se solicita, mostrar ayuda.
491if [ "$*" == "help" ]; then
492    ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk int_filesys" \
493           "$FUNCNAME 1 1"
494    return
495fi
496
497# Error si no se reciben 2 parámetros.
498[ $# == 2 ] || ogRaiseError $OG_ERR_FORMAT || return $?
499# Obtener sistema de archvios.
500MNTDIR=$(ogMount $1 $2) || return $?
501
502# Comprobar si existe el cliente y los directorios y ficheros destino.
503CLIENTFILE=$OGLIB/ogclient/ogAdmLnxClient
504[ -f $CLIENTFILE ] || ogRaiseError $OG_ERR_FOUND "$CLIENTFILE" || return $?
505for i in /usr/local/sbin /sbin /usr/sbin; do
506    [ -d $MNTDIR/$i ] && SBINDIR=$i
507done
508[ -n "$SBINDIR" ] || ogRaiseError $OG_ERR_NOTFOUND "$1 $2 sbin" || return $?
509for i in /usr/local/etc /etc; do
510    [ -d $MNTDIR/$i ] && ETCDIR=$i
511done
512[ -n "$ETCDIR" ] || ogRaiseError $OG_ERR_NOTFOUND "$1 $2 etc" || return $?
513for i in $ETCDIR/rc.local $ETCDIR/rc.d/rc.local; do
514    [ -f $i ] && RCLOCAL=$i
515done
516[ -n "$RCLOCAL" ] || ogRaiseError $OG_ERR_NOTFOUND "$1 $2 rc.local" || return $?
517# Realizar la instalación en modo uso exclusivo.
518ogLock $1 $2
519trap "ogUnlock $1 $2" 1 2 3 6 9
520# Copiar cliente, generar fichero de configuración e incluir en el arranque.
521cp -a $CLIENTFILE $MNTDIR/$SBINDIR
522cat > $MNTDIR/$ETCDIR/ogAdmLnxClient.cfg << EOT
523ServidorAdm=$(ogGetServerIp)
524PUERTO=2008
525IPLOCAL=$(ogGetIpAddress)
526EOT
527cp -a $MNTDIR/$RCLOCAL /tmp/rclocal
528awk -v sbin=$SBINDIR -v etc=$ETCDIR \
529        '{ if (/^#/) { print; }
530           else {
531                if (loc==0) {
532                    printf "%s/ogAdmLnxClient -f %s/ogAdmLnxClient.cfg &\n",sbin,etc;
533                    loc=1; }
534                if (! /ogAdmLnxClient/)
535                    print; }
536        }' /tmp/rclocal > $MNTDIR/$RCLOCAL
537rm /tmp/rclocal
538ogUnlock $1 $2
539}
540
541
542#/**
543#         ogInstallWindowsClient int_ndisk int_filesys str_filename
544#@brief   Instala el cliente OpenGnSys para sistemas operativos Windows.
545#@param   int_ndisk         nº de orden del disco
546#@param   int_npartition    nº de orden de la partición
547#@param   str_filename      nombre del fichero cmd donde deberemos introducir el comando de ejecutar el script vbs
548#@return  (nada)
549#@exception OG_ERR_FORMAT    Formato incorrecto.
550#@exception OG_ERR_NOTFOUND  Fichero o dispositivo no encontrado.
551#@exception OG_ERR_PARTITION Paritición o sistema de archivos incorrectos.
552#@exception OG_ERR_LOCKED    Sistema de archivos bloqueado.
553#@version 1.0.4 - Primera adaptación para OpenGnSys.
554#@author  Ramon Gomez, ETSII Universidad de Sevilla
555#@date    2012-04-11
556#@version 1.0.5 - Cambios en los parametros de entrada y funcionamiento de la funcion
557#@author  Jonathan Alonso Martinez - Universidad Autonoma de Barcelona
558#@date    2013-02-12
559#*/ ##
560
561function ogInstallWindowsClient ()
562{
563# Variables locales.
564local MNTDIR CLIENTFILE i DIR WINDIR
565# Si se solicita, mostrar ayuda.
566if [ "$*" == "help" ]; then
567    ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk int_filesys str_filename" \
568           "$FUNCNAME 1 1 filename.cmd"
569    return
570fi
571
572# Error si no se reciben 3 parámetros.
573[ $# == 3 ] || ogRaiseError $OG_ERR_FORMAT || return $?
574# Obtener sistema de archvios.
575MNTDIR=$(ogMount $1 $2) || return $?
576
577# Comprobar si existe el cliente y los directorios y ficheros destino.
578CLIENTFILE=$OGLIB/ogclient/ogAdmWinClient.exe
579[ -f $CLIENTFILE ] || ogRaiseError $OG_ERR_FOUND "$CLIENTFILE" || return $?
580for i in winnt windows; do
581    DIR=$(ogGetPath $MNTDIR/$i)
582    [ -n "$DIR" ] && WINDIR=$DIR
583done
584[ -n "$WINDIR " ] || ogRaiseError $OG_ERR_NOTFOUND "$1 $2 windows" || return $?
585# Copiar cliente e incluir en el fichero de configuracion dado que instale el cliente en el arranque.
586cp -a $CLIENTFILE "$WINDIR"
587ogAddCmd $1 $2 $3 "ogAdmWinClient -remove"
588ogAddCmd $1 $2 $3 "ogAdmWinClient -install -s $(ogGetServerIp) -p 2008 -i $(ogGetIpAddress)"
589}
590
591
592
593#/**
594#         ogUninstallLinuxClient int_ndisk int_filesys
595#@brief   Desinstala el cliente OpenGnSys para sistemas operativos GNU/Linux.
596#@param   int_ndisk    nº de orden del disco
597#@param   int_filesys  nº de orden del sistema de archivos
598#@return  (nada)
599#@exception OG_ERR_FORMAT    Formato incorrecto.
600#@exception OG_ERR_PARTITION Paritición o sistema de archivos incorrectos.
601#@exception OG_ERR_LOCKED    Sistema de archivos bloqueado.
602#@version 1.1.0 - Primera adaptación para OpenGnsys.
603#@author  Ramon Gomez, ETSII Universidad de Sevilla
604#@date    2016-08-22
605#*/ ##
606function ogUninstallLinuxClient ()
607{
608# Variables locales.
609local MNTDIR
610# Si se solicita, mostrar ayuda.
611if [ "$*" == "help" ]; then
612    ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk int_filesys" \
613           "$FUNCNAME 1 1"
614    return
615fi
616
617# Error si no se reciben 2 parámetros.
618[ $# == 2 ] || ogRaiseError $OG_ERR_FORMAT || return $?
619# Obtener sistema de archvios.
620MNTDIR=$(ogMount $1 $2) || return $?
621
622# Borrar ficheros y quitar llamada al cliente durante el proceso de inicio.
623rm -f $MNTDIR/{usr/sbin,sbin,usr/local/sbin}/ogAdmLnxClient
624rm -f $MNTDIR/{etc,usr/local/etc}/ogAdmLnxClient.cfg
625sed -i -e '/ogAdmLnxClient/ d' $MNTDIR/{etc,usr/local/etc}/{rc.local,rc.d/rc.local} 2>/dev/null
626}
627
628
629#/**
630#         ogUninstallWindowsClient int_ndisk int_filesys str_filename
631#@brief   Desinstala el cliente OpenGnSys para sistemas operativos Windows.
632#@param   int_ndisk         nº de orden del disco
633#@param   int_npartition    nº de orden de la partición
634#@param   str_filename      nombre del fichero cmd donde deberemos introducir el comando de ejecutar el script vbs
635#@return  (nada)
636#@exception OG_ERR_FORMAT    Formato incorrecto.
637#@exception OG_ERR_PARTITION Paritición o sistema de archivos incorrectos.
638#@exception OG_ERR_LOCKED    Sistema de archivos bloqueado.
639#@version 1.1.0 - Primera adaptación para OpenGnsys.
640#@author  Ramon Gomez, ETSII Universidad de Sevilla
641#@date    2016-08-22
642#*/ ##
643
644function ogUninstallWindowsClient ()
645{
646# Variables locales.
647local MNTDIR
648# Si se solicita, mostrar ayuda.
649if [ "$*" == "help" ]; then
650    ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk int_filesys str_filename" \
651           "$FUNCNAME 1 1 filename.cmd"
652    return
653fi
654
655# Error si no se reciben 3 parámetros.
656[ $# == 3 ] || ogRaiseError $OG_ERR_FORMAT || return $?
657# Obtener sistema de archvios.
658MNTDIR=$(ogMount "$1" "$2") || return $?
659
660# Crear órdenes para desinstalar servicio y borrar ejecutable del cliente.
661if [ -n "$(ogGetPath $MNTDIR/windows/ogAdmWinClient.exe)" -o -n "$(ogGetPath $MNTDIR/winnt/ogAdmWinClient.exe)" ]; then
662    ogAddCmd $1 $2 "$3" 'ogAdmWinClient -remove'
663    ogAddCmd $1 $2 "$3" 'DEL C:\Windows\ogAdmWinClient.exe'
664    ogAddCmd $1 $2 "$3" 'DEL C:\Winnt\ogAdmWinClient.exe'
665fi
666}
667
Note: See TracBrowser for help on using the repository browser.