source: client/engine/PostConf.lib @ 5868bfe

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 5868bfe was 305c256, checked in by irina <irinagomez@…>, 7 years ago

Se corrigen erratas por usar el código de error de ogGetPath

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

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