source: client/engine/PostConf.lib @ 42d268a4

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 42d268a4 was 42d268a4, checked in by ramon <ramongomez@…>, 7 years ago

#730: Corregir errata al obtener bancos de memoria en inventario de hardware; crear fichero de comandos Windows si no existe al añadir el primero de ellos y subir el timeout de conexiones REST a 500 ms.

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

  • Property mode set to 100755
File size: 25.1 KB
RevLine 
[6dfdc6d]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.
[f5aad83]7#@version 1.1.0
[6dfdc6d]8#@warning License: GNU GPLv3+
9#*/
10
[642e39f]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
[6dfdc6d]55#/**
[6e390b1]56#         ogInstallMiniSetup int_ndisk int_npartition str_filename [str_admuser str_admpassword bool_autologin [str_autouser str_autopassword] ]
[d81c0cb]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
[46b6de6]68        return $? ;;
[d81c0cb]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#*/ ##
[a726491]89function ogInstallFirstBoot ()
[d81c0cb]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
[499a7ec]98# Error si no se reciben 3 parámetros.
[d81c0cb]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 $?
[32001e9]107CMDFILE="$CMDDIR/$3"
[d81c0cb]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
[7c52c30]116# Crear los valores de registro necesarios para que se haga la ejecución del .cmd al aranque.
[d81c0cb]117ogSetRegistryValue "$MNTDIR" SYSTEM "\Setup\SystemSetupInProgress" 1
118ogSetRegistryValue "$MNTDIR" SYSTEM "\Setup\SetupType" 4
[213df34]119#ogDeleteRegistryValue "$MNTDIR" SYSTEM "\Setup\CmdLine"
[7c52c30]120ogAddRegistryValue "$MNTDIR" SYSTEM "\Setup\CmdLine"
[32001e9]121ogSetRegistryValue "$MNTDIR" SYSTEM "\Setup\CmdLine" "cmd.exe /c $(basename $CMDFILE)"
[d81c0cb]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)
[5792125]134#@param   str_auto_user     Usuario con el que queremos que haga autologin despues de la postconfiguracion
[d81c0cb]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
[499a7ec]168    # Si no queremos hacer autologin despues de la postconfiguracion lo indicamos en las claves de registro
[d81c0cb]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
[499a7ec]176    # Si queremos hacer autologin despues de la postconfiguracion introducimos la informacion en las claves de registro
[d81c0cb]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
[d177da73]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 $?
[42d268a4]223# Crear fichero de comandos, si no existe.
[d177da73]224CMDFILE="$(ogGetPath "$MOUNTPOINT/windows/system32")/$3"
[42d268a4]225[ -n "$CMDFILE" ] || ogInstallMiniSetup "$1" "$2" "$3"
[d177da73]226[ -n "$CMDFILE" ] || ogRaiseError $OG_ERR_NOTFOUND "$MOUNTPOINT/windows/system32/$3" || return $?
227
228# Concatenamos el comando en el fichero de comandos
229cat >> "$CMDFILE" << EOF
230$4
231EOF
232}
233
[d81c0cb]234
235#/**
[d177da73]236#         ogDomainScript int_ndisk int_npartition str_domain str_user str_password
237#@brief   Crea un script .vbs para unir al dominio una maquina windows y el comando adequado en el archivo cmd creado por ogInstallMiniSetup
238#@param   int_ndisk         nº de orden del disco
239#@param   int_npartition    nº de orden de la partición
240#@param   str_filename      nombre del fichero cmd donde deberemos introducir el comando de ejecutar el script vbs
241#@param   str_domain        dominio donde se quiere conectar
242#@param   str_user          usuario con privilegios para unir al dominio
243#@param   str_password      password del usuario con privilegios
244#@return 
245#@exception OG_ERR_FORMAT    Formato incorrecto.
246#@version 1.0.2 - Nueva función
247#@author  Jonathan Alonso Martinez - Universidad Autonoma de Barcelona
248#@date    2011-06-29
249#@version 1.0.4 - Cambios en los parametros de entrada de la funcion
250#@author  Jonathan Alonso Martinez - Universidad Autonoma de Barcelona
251#@date    2012-04-16
252#*/ ##
253function ogDomainScript ()
254{
255local CMDDIR
256# Si se solicita, mostrar ayuda.
257if [ "$*" == "help" ]; then
258    ogHelp "$FUNCNAME" \
259           "$FUNCNAME int_ndisk int_npartition str_filename str_domain str_user str_password" \
260           "$FUNCNAME 1 1 filename.cmd domain user password_user"
261    return
262fi
263# Error si no se reciben 6 parámetros.
264[ $# == 6 ] || return $(ogRaiseError $OG_ERR_FORMAT; echo $?)
265# Punto de montaje
266MOUNTPOINT="$(ogMount "$1" "$2")" || return $?
267# Comprobar que existe el directorio de comandos.
268CMDDIR=$(ogGetPath "$MOUNTPOINT/windows/system32")
269[ -n "$CMDDIR" ] || ogRaiseError $OG_ERR_NOTFOUND "$1/windows/system32" || return $?
270
271# Añadimos en el cmd que se ejecutara al arranque, el comando de ejecutar el script que añade al dominio.
272ogAddCmd $1 $2 "$3" "CSCRIPT joindomain.vbs"
273# Eliminamos el script porque tiene el usuario de administrador de dominio en claro
274ogAddCmd $1 $2 "$3" "DEL /Q C:\Windows\System32\joindomain.vbs"
275# Metemos unas claves de registro para que el dominio salga seleccionado por defecto
276ogAddCmd $1 $2 "$3" "REG ADD \"HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\" /v DefaultDomainName /t REG_SZ /d \"$4\" /f"
277
278# Creamos el archivo joindomain.vbs que nos introduce la maquina en el dominio
279cat > "$CMDDIR/joindomain.vbs" << EOF
280Const JOIN_DOMAIN = 1
281Const ACCT_CREATE = 2
282Const ACCT_DELETE = 4
283Const WIN9X_UPGRADE = 16
284Const DOMAIN_JOIN_IF_JOINED = 32
285Const JOIN_UNSECURE = 64
286Const MACHINE_PASSWORD_PASSED = 128
287Const DEFERRED_SPN_SET = 256
288Const INSTALL_INVOCATION = 262144
289
290strDomain = "$4"
291strUser = "$5"
292strPassword = "$6"
293
294Set objNetwork = CreateObject("WScript.Network")
295strComputer = objNetwork.ComputerName
296
297Set objComputer = GetObject("winmgmts:{impersonationLevel=Impersonate}!\\\" & _
298    strComputer & "\root\cimv2:Win32_ComputerSystem.Name='" & strComputer & "'")
299
300ReturnValue = objComputer.JoinDomainOrWorkGroup(strDomain, strPassword, _
301    strDomain & "\" & strUser, NULL, JOIN_DOMAIN + ACCT_CREATE)
302EOF
303}
304
305
[365a3ca]306### PRUEBAS.
307
308#/**
[27c67d9]309#         ogConfigureOgagent int_ndisk int_filesys
[b670227]310#@brief   Modifica el fichero de configuración del nuevo agente OGAent para sistemas operativos.
311#@param   int_ndisk    nº de orden del disco
312#@param   int_filesys  nº de orden del sistema de archivos
313#@return  (nada)
314#@exception OG_ERR_FORMAT    Formato incorrecto.
315#@exception OG_ERR_NOTFOUND  Fichero o dispositivo no encontrado.
316#@exception OG_ERR_LOCKED    Sistema de archivos bloqueado.
317#@version 1.1.0 - Primera adaptación para OpenGnsys.
318#@author  Ramon Gomez, ETSII Universidad de Sevilla
319#@date    2016-07-15
320#*/ ##
[27c67d9]321function ogConfigureOgagent ()
[b670227]322{
323# Variables locales.
324local MNTDIR AGENTDIR CFGFILE
325# Si se solicita, mostrar ayuda.
326if [ "$*" == "help" ]; then
327    ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk int_filesys" \
328           "$FUNCNAME 1 1"
329    return
330fi
331
332# Error si no se reciben 2 parámetros.
333[ $# == 2 ] || ogRaiseError $OG_ERR_FORMAT || return $?
334# Obtener sistema de archvios.
335MNTDIR=$(ogMount $1 $2) || return $?
336
337# Comprobar si existe el fichero de configuración de OGAgent.
[27c67d9]338for AGENTDIR in usr/share/OGAgent "Program Files/OGAgent" "Program Files (x86)/OGAgent" Applications/OGAgent.app; do
339    CFGFILE=$(ogGetPath "$MNTDIR/$AGENTDIR/cfg/ogagent.cfg")
[b670227]340    [ -n "$CFGFILE" ] && break
341done
[27c67d9]342[ -n "$CFGFILE" ] || ogRaiseError $OG_ERR_NOTFOUND "ogagent.cfg" || return $?
[b670227]343# Parchear dirección del servidor OpenGnsys en el fichero de configuración de OGAgent.
[7d09bd7]344sed -i "0,/remote=/ s,remote=.*,remote=https://$(ogGetServerIp)/opengnsys/rest/," "$CFGFILE"
[b670227]345}
346
347
348#/**
[365a3ca]349#         ogInstallLaunchDaemon int_ndisk int_nfilesys str_filename
350#@brief   Instala archivo que se ejecutará en el arranque de Mac OS.
351#@param   int_ndisk         nº de orden del disco
352#@param   int_nfilesys      nº de orden del sistema de archivos
353#@param   str_filename      nombre del script
354#return   (nada)
355#@exception OG_ERR_FORMAT    Formato incorrecto.
356#@exception OG_ERR_NOTFOUND  Fichero o directorio no encontrado.
357#@npte    Crea ficheros de configuración /Library/LaunchDaemon/es.opengnsys.Script.plist.
358#@version 1.0.6 - Primera versión para OpenGnSys.
359#@author  Ramon Gomez, ETSII Universidad de Sevilla
360#@date    2014-10-06
361#*/ ##
362function ogInstallLaunchDaemon ()
363{
364# Variables locales.
365local LAUNCHDIR SCRIPTDIR
366# Si se solicita, mostrar ayuda.
367if [ "$*" == "help" ]; then
368    ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk int_filesys str_scriptname" \
369           "$FUNCNAME 1 2 postconf"
370    return
371fi
372
373# Error si no se reciben 3 parámetros.
374[ $# == 3 ] || ogRaiseError $OG_ERR_FORMAT || return $?
375# Comprobar directorios.
376LAUNCHDIR=$(ogGetPath $1 $2 /Library/LaunchDaemons)
377[ -n "$LAUNCHDIR" ] || ogRaiseError $OG_ERR_NOTFOUND "$1 $2 /Library/LaunchDaemons" || return $?
378SCRIPTDIR=$(ogGetPath $1 $2 /usr/share)
379[ -n "$SCRIPTDIR" ] || ogRaiseError $OG_ERR_NOTFOUND "$1 $2 /usr/share" || return $?
380
381# Crear fichero de configuración del servicio de arranque.
382cat << EOT $LAUNCHDIR/es.opengnsys.$3.plist
383<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
384<plist version="1.0">
385        <dict>
386                <key>Label</key>
387                <string>es.opengnsys.$3</string>
388                <key>ProgramArguments</key>
389                <array>
390                        <string>$SCRIPTDIR/$3.sh</string>
391                </array>
392                <key>RunAtLoad</key>
393                <true/>
394                <key>StandardOutPath</key>
395                <string>/var/log/$3.log</string>
396                <key>StandardErrorPath</key>
397                <string>/var/log/$3.err</string>
398                <true/>
399        </dict>
400</plist>
401EOT
402
403# Crear un fichero de script vacío.
404rm -f $SCRIPTDIR/$3.sh
405touch $SCRIPTDIR/$3.sh
406chmod +x $SCRIPTDIR/$3.sh
407}
408
409
410### PRUEBAS.
411
412#/**
413#         ogAddToLaunchDaemon int_ndisk int_nfilesys str_filename str_commands
414#@brief   Añade comandos al script creado por ogInstalLaunchDaemon.
415#@param   int_ndisk         nº de orden del disco
416#@param   int_nfilesys      nº de orden del sistema de archivos
417#@param   str_filename      nombre del script (siempre se guardará en /usr/share para que sea visible por el sistema
418#@param   str_commands      comando o comandos que se añadiran al fichero
419#return   (nada)
420#@exception OG_ERR_FORMAT    Formato incorrecto.
421#@exception OG_ERR_NOTFOUND  Fichero o directorio no encontrado.
422#@version 1.0.6 - Primera versión para OpenGnSys.
423#@author  Ramon Gomez, ETSII Universidad de Sevilla
424#@date    2014-10-06
425#*/ ##
426function ogAddToLaunchDaemon ()
427{
428# Variables locales.
429local SCRIPTFILE
430# Si se solicita, mostrar ayuda.
431if [ "$*" == "help" ]; then
432    ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk int_filesys str_scriptname" \
433           "$FUNCNAME 1 2 postconf \"diskutil enableJournal disk0s2\""
434    return
435fi
436
437# Error si no se reciben 4 parámetros.
438[ $# == 4 ] || ogRaiseError $OG_ERR_FORMAT || return $?
439# Comprobar que existe el fichero de comandos.
440SCRIPTFILE=$(ogGetPath $1 $2 "/usr/share/$3.sh")
441[ -n "$SCRIPTFILE" ] || ogRaiseError $OG_ERR_NOTFOUND "$1 $2 /usr/share/$3" || return $?
442
443# Concatenamos el comando en el fichero de comandos
444cat >> "$SCRIPTFILE" << EOT
445$4
446EOT
447}
448
449
[d177da73]450#/**
451#         ogInstallLinuxClient int_ndisk int_filesys
[204603e]452#@brief   Instala el cliente OpenGnSys para sistemas operativos GNU/Linux.
[d177da73]453#@param   int_ndisk    nº de orden del disco
454#@param   int_filesys  nº de orden del sistema de archivos
455#@return  (nada)
456#@exception OG_ERR_FORMAT    Formato incorrecto.
457#@exception OG_ERR_NOTFOUND  Fichero o dispositivo no encontrado.
458#@exception OG_ERR_PARTITION Paritición o sistema de archivos incorrectos.
459#@exception OG_ERR_LOCKED    Sistema de archivos bloqueado.
460#@version 1.0.4 - Primera adaptación para OpenGnSys.
461#@author  Ramon Gomez, ETSII Universidad de Sevilla
462#@date    2012-04-10
[204603e]463#@version 1.0.5 - Evitar duplicidad de instalación del cliente.
464#@author  Ramon Gomez, ETSII Universidad de Sevilla
465#@date    2014-03-06
[d177da73]466#*/ ##
467function ogInstallLinuxClient ()
468{
469# Variables locales.
[5962edd]470local MNTDIR CLIENTFILE i SBINDIR ETCDIR RCLOCAL
[d177da73]471# Si se solicita, mostrar ayuda.
472if [ "$*" == "help" ]; then
473    ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk int_filesys" \
474           "$FUNCNAME 1 1"
475    return
476fi
477
478# Error si no se reciben 2 parámetros.
479[ $# == 2 ] || ogRaiseError $OG_ERR_FORMAT || return $?
480# Obtener sistema de archvios.
[5962edd]481MNTDIR=$(ogMount $1 $2) || return $?
482
[d177da73]483# Comprobar si existe el cliente y los directorios y ficheros destino.
484CLIENTFILE=$OGLIB/ogclient/ogAdmLnxClient
485[ -f $CLIENTFILE ] || ogRaiseError $OG_ERR_FOUND "$CLIENTFILE" || return $?
486for i in /usr/local/sbin /sbin /usr/sbin; do
487    [ -d $MNTDIR/$i ] && SBINDIR=$i
488done
489[ -n "$SBINDIR" ] || ogRaiseError $OG_ERR_NOTFOUND "$1 $2 sbin" || return $?
490for i in /usr/local/etc /etc; do
491    [ -d $MNTDIR/$i ] && ETCDIR=$i
492done
493[ -n "$ETCDIR" ] || ogRaiseError $OG_ERR_NOTFOUND "$1 $2 etc" || return $?
494for i in $ETCDIR/rc.local $ETCDIR/rc.d/rc.local; do
495    [ -f $i ] && RCLOCAL=$i
496done
497[ -n "$RCLOCAL" ] || ogRaiseError $OG_ERR_NOTFOUND "$1 $2 rc.local" || return $?
[14bfbe6]498# Realizar la instalación en modo uso exclusivo.
499ogLock $1 $2
[7b9dedd]500trap "ogUnlock $1 $2" 1 2 3 6 9
[14bfbe6]501# Copiar cliente, generar fichero de configuración e incluir en el arranque.
[d177da73]502cp -a $CLIENTFILE $MNTDIR/$SBINDIR
503cat > $MNTDIR/$ETCDIR/ogAdmLnxClient.cfg << EOT
504ServidorAdm=$(ogGetServerIp)
505PUERTO=2008
506IPLOCAL=$(ogGetIpAddress)
507EOT
508cp -a $MNTDIR/$RCLOCAL /tmp/rclocal
509awk -v sbin=$SBINDIR -v etc=$ETCDIR \
510        '{ if (/^#/) { print; }
511           else {
512                if (loc==0) {
513                    printf "%s/ogAdmLnxClient -f %s/ogAdmLnxClient.cfg &\n",sbin,etc;
514                    loc=1; }
[204603e]515                if (! /ogAdmLnxClient/)
516                    print; }
[d177da73]517        }' /tmp/rclocal > $MNTDIR/$RCLOCAL
518rm /tmp/rclocal
[14bfbe6]519ogUnlock $1 $2
520}
[204603e]521
522
523#/**
[930dbb8]524#         ogInstallWindowsClient int_ndisk int_filesys str_filename
[204603e]525#@brief   Instala el cliente OpenGnSys para sistemas operativos Windows.
526#@param   int_ndisk         nº de orden del disco
527#@param   int_npartition    nº de orden de la partición
528#@param   str_filename      nombre del fichero cmd donde deberemos introducir el comando de ejecutar el script vbs
529#@return  (nada)
530#@exception OG_ERR_FORMAT    Formato incorrecto.
531#@exception OG_ERR_NOTFOUND  Fichero o dispositivo no encontrado.
532#@exception OG_ERR_PARTITION Paritición o sistema de archivos incorrectos.
533#@exception OG_ERR_LOCKED    Sistema de archivos bloqueado.
534#@version 1.0.4 - Primera adaptación para OpenGnSys.
535#@author  Ramon Gomez, ETSII Universidad de Sevilla
536#@date    2012-04-11
537#@version 1.0.5 - Cambios en los parametros de entrada y funcionamiento de la funcion
538#@author  Jonathan Alonso Martinez - Universidad Autonoma de Barcelona
539#@date    2013-02-12
540#*/ ##
541
542function ogInstallWindowsClient ()
543{
544# Variables locales.
[930dbb8]545local MNTDIR CLIENTFILE i DIR WINDIR
[204603e]546# Si se solicita, mostrar ayuda.
547if [ "$*" == "help" ]; then
[930dbb8]548    ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk int_filesys str_filename" \
[204603e]549    return
550fi
551
552# Error si no se reciben 3 parámetros.
553[ $# == 3 ] || ogRaiseError $OG_ERR_FORMAT || return $?
554# Obtener sistema de archvios.
[5962edd]555MNTDIR=$(ogMount $1 $2) || return $?
556
[204603e]557# Comprobar si existe el cliente y los directorios y ficheros destino.
558CLIENTFILE=$OGLIB/ogclient/ogAdmWinClient.exe
559[ -f $CLIENTFILE ] || ogRaiseError $OG_ERR_FOUND "$CLIENTFILE" || return $?
560for i in winnt windows; do
561    DIR=$(ogGetPath $MNTDIR/$i)
562    [ -n "$DIR" ] && WINDIR=$DIR
563done
564[ -n "$WINDIR " ] || ogRaiseError $OG_ERR_NOTFOUND "$1 $2 windows" || return $?
565# Copiar cliente e incluir en el fichero de configuracion dado que instale el cliente en el arranque.
566cp -a $CLIENTFILE "$WINDIR"
567ogAddCmd $1 $2 $3 "ogAdmWinClient -remove"
568ogAddCmd $1 $2 $3 "ogAdmWinClient -install -s $(ogGetServerIp) -p 2008 -i $(ogGetIpAddress)"
569}
570
[930dbb8]571
572
573#/**
574#         ogUninstallLinuxClient int_ndisk int_filesys
575#@brief   Desinstala el cliente OpenGnSys para sistemas operativos GNU/Linux.
576#@param   int_ndisk    nº de orden del disco
577#@param   int_filesys  nº de orden del sistema de archivos
578#@return  (nada)
579#@exception OG_ERR_FORMAT    Formato incorrecto.
580#@exception OG_ERR_PARTITION Paritición o sistema de archivos incorrectos.
581#@exception OG_ERR_LOCKED    Sistema de archivos bloqueado.
[5bfead0]582#@version 1.1.0 - Primera adaptación para OpenGnsys.
[930dbb8]583#@author  Ramon Gomez, ETSII Universidad de Sevilla
584#@date    2016-08-22
585#*/ ##
586function ogUninstallLinuxClient ()
587{
588# Variables locales.
589local MNTDIR
590# Si se solicita, mostrar ayuda.
591if [ "$*" == "help" ]; then
592    ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk int_filesys" \
593           "$FUNCNAME 1 1"
594    return
595fi
596
597# Error si no se reciben 2 parámetros.
598[ $# == 2 ] || ogRaiseError $OG_ERR_FORMAT || return $?
599# Obtener sistema de archvios.
600MNTDIR=$(ogMount $1 $2) || return $?
601
602# Borrar ficheros y quitar llamada al cliente durante el proceso de inicio.
603rm -f $MNTDIR/{usr/sbin,sbin,usr/local/sbin}/ogAdmLnxClient
604rm -f $MNTDIR/{etc,usr/local/etc}/ogAdmLnxClient.cfg
605sed -i -e '/ogAdmLnxClient/ d' $MNTDIR/{etc,usr/local/etc}/{rc.local,rc.d/rc.local} 2>/dev/null
606}
607
608
609#/**
610#         ogUninstallWindowsClient int_ndisk int_filesys str_filename
611#@brief   Desinstala el cliente OpenGnSys para sistemas operativos Windows.
612#@param   int_ndisk         nº de orden del disco
613#@param   int_npartition    nº de orden de la partición
614#@param   str_filename      nombre del fichero cmd donde deberemos introducir el comando de ejecutar el script vbs
615#@return  (nada)
616#@exception OG_ERR_FORMAT    Formato incorrecto.
617#@exception OG_ERR_PARTITION Paritición o sistema de archivos incorrectos.
618#@exception OG_ERR_LOCKED    Sistema de archivos bloqueado.
[5bfead0]619#@version 1.1.0 - Primera adaptación para OpenGnsys.
[930dbb8]620#@author  Ramon Gomez, ETSII Universidad de Sevilla
621#@date    2016-08-22
622#*/ ##
623
624function ogUninstallWindowsClient ()
625{
626# Variables locales.
627local MNTDIR
628# Si se solicita, mostrar ayuda.
629if [ "$*" == "help" ]; then
630    ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk int_filesys str_filename" \
631    return
632fi
633
634# Error si no se reciben 3 parámetros.
635[ $# == 3 ] || ogRaiseError $OG_ERR_FORMAT || return $?
636# Obtener sistema de archvios.
[1777170]637MNTDIR=$(ogMount "$1" "$2") || return $?
[930dbb8]638
639# Crear órdenes para desinstalar servicio y borrar ejecutable del cliente.
[8792fed]640if [ -n "$(ogGetPath $MNTDIR/windows/ogAdmWinClient.exe)" -o -n "$(ogGetPath $MNTDIR/winnt/ogAdmWinClient.exe)" ]; then
[1777170]641    ogAddCmd $1 $2 "$3" 'ogAdmWinClient -remove'
642    ogAddCmd $1 $2 "$3" 'DEL C:\Windows\ogAdmWinClient.exe'
643    ogAddCmd $1 $2 "$3" 'DEL C:\Winnt\ogAdmWinClient.exe'
[930dbb8]644fi
645}
646
Note: See TracBrowser for help on using the repository browser.