source: client/engine/PostConf.lib @ 029ff6d

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 029ff6d was 8601c62, checked in by ramon <ramongomez@…>, 8 years ago

#718: Actualizar instrucciones y preparar postconfiguración para OGAgent de macOS.

git-svn-id: https://opengnsys.es/svn/branches/version1.1@5212 a21b9725-9963-47de-94b9-378ad31fedc9

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