1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
|
#!/bin/bash
#/**
# configureOs
#@brief Script para realizar la configuracion del sistema operativo restaurado.
#@param 1 disco
#@param 2 particion
#@return
#@TODO comprobar que el tipo de particion corresponde con el sistema de archivos.
#@exception OG_ERR_FORMAT # 1 formato incorrecto.
#@version 1.0.1 - Integracion cambio de nombre, extender fs, chequear particion activa
#@author
#@date 2011-05-11
#@version 1.0.1 - Configura el sector de la particion y el gestor de windows para iniciarse desde cualquier particion.
#@author Antonio J. Doblas Viso. Universidad de Malaga.
#@date 2011-05-20
#@version 1.0.2 - Configura el sector de la particion y el gestor de linux para iniciarse desde cualquier particion.
#@author Antonio J. Doblas Viso. Universidad de Malaga.
#@date 2011-11-22
#@version 1.0.3 - Configura el chkdisk en el arranque de windows, segun variable OGWINCHKDISK del engine.cfg.
#@author Antonio J. Doblas Viso. Universidad de Malaga.
#@date 2011-12-23
#@version 1.0.4 - Inyecta el cliente para gestión del sistema operativo.
#@author Ramon Gomez, ETSII Universidad de Sevilla
#@date 2012-04-11
#@version 1.0.5 - Postconfiguración para Mac OS X.
#@author Ramon Gomez, ETSII Universidad de Sevilla
#@date 2013-10-11
#@version 1.1.0 - Postconfiguración para agente de sistema operativo basado en REST.
#@author Ramon Gomez, ETSII Universidad de Sevilla
#@date 2016-08-16
#@version 1.0.6b - llamadas opcionales para mejoras varias. Descomentar la instruccion para su activacion. ogConfigureFstab
#@author Antonio J. Doblas Viso. Universidad de Malaga.
#@date 2016-11-03
#*/ ##
# Carga el configurador del engine y los parámetros de red.
[ -z $OGENGINECONFIGURATE ] && source /opt/opengnsys/etc/engine.cfg
[ -f $DEVICECFG ] && source $DEVICECFG
# Si el sistema de archivos no esta extendido, ampliarlo al tamaño de su partición.
PARTSIZE=$(ogGetPartitionSize $1 $2) || exit $?
FSSIZE=$(ogGetFsSize $1 $2)
if [ $FSSIZE -lt $PARTSIZE ]; then
echo "Extender sistema de archivos."
ogExtendFs $1 $2
fi
# Si no existe partición activa, activar este sistema.
FLAGACTIVE=$(ogGetPartitionActive $1)
[ -z $FLAGACTIVE ] && ogSetPartitionActive $1 $2
# Si el sistema de archivos es de solo lectura, no hacer la post-configuración.
MNTDIR=$(ogMount $1 $2)
if ! ogIsWritable $1 $2; then
echo "AVISO: sistema de archivos de solo lectura, no se ejecuta postconfiguración."
exit
fi
# Nombre del cliente.
HOST="$(ogGetHostname)"
# Post-configuración personalizada para cada tipo de sistema operativo.
OSTYPE="$(ogGetOsType $1 $2)"
case "$OSTYPE" in
Windows) # Postconfiguración de Windows.
# Cambiar nombre en sistemas Windows.
HOST=${HOST:-"pc"}
ogSetWindowsName $1 $2 "$HOST"
# Configurar el boot sector de la partición Windows.
ogFixBootSector $1 $2
# Configurar el gestor de arranque de Windows XP/Vista/7.
ogWindowsBootParameters $1 $2
# Registrar en Windows que la partición indicada es su nueva unidad C:\
ogWindowsRegisterPartition $1 $2 C $1 $2
# Eliminar el antiguo cliente de Windows.
if [ -n "$(ogGetPath $MNTDIR/windows/ogAdmWinClient.exe)$(ogGetPath $MNTDIR/winnt/ogAdmWinClient.exe)" ]; then
ogInstallMiniSetup $1 $2 postconf.cmd
ogUninstallWindowsClient $1 $2 postconf.cmd
fi
# Configurar nuevo agente OGAgent.
ogConfigureOgagent $1 $2
;;
Linux) # Postconfiguración de GNU/Linux.
## Instala (no configura) el codigo de arranque del Grub en la partición (no lo configura, se mantiene el original de la imagen)
ogGrubInstallPartition $1 $2
# Eliminar el antiguo cliente de Linux.
[ -n "$(find $MNTDIR/usr/sbin $MNTDIR/sbin $MNTDIR/usr/local/sbin -name ogAdmLnxClient -print)" ] && ogUninstallLinuxClient $1 $2
# Configurar nuevo agente OGAgent.
ogConfigureOgagent $1 $2
;;
MacOS) # Postconfiguración de Mac OS X.
# Fichero indicador de activación de postconfiguración.
touch $MNTDIR/osxpostconf
# Crear fichero de configuración del servicio de arranque.
cat << EOT >$MNTDIR/Library/LaunchDaemons/es.opengnsys.postconfd.plist
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>es.opengnsys.postconfd.sh</string>
<key>ProgramArguments</key>
<array>
<string>/var/root/postconfd.sh</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>StandardOutPath</key>
<string>/var/log/postconfd.log</string>
<key>StandardErrorPath</key>
<string>/var/log/postconfd.err</string>
<key>Debug</key>
<true/>
</dict>
</plist>
EOT
# Programa de inicio que será ejecutado en el arranque de Mac OS X.
cat << EOT >$MNTDIR/var/root/postconfd.sh
#!/bin/bash
# postconfd - ejecución de scripts de inicio.
# Ejecutar postconfiguración si existe el fichero indicador.
if [ -e /osxpostconf ]; then
# Tomar nombre del equipo.
HOST="$HOST"
if [ -z "\$HOST" ]; then
# Si no hay nombre asociado, activar la red para obtener datos del DHCP.
source /etc/rc.common
CheckForNetwork
while [ "\$NETWORKUP" != "-YES-" ]; do
sleep 5
NETWORKUP=
CheckForNetwork
done
# Componer nombre del equipo a partir de datos del DHCP.
IP=\$(ifconfig en0 inet | awk '{if (\$1=="inet") print \$2}')
HOST="mac-\$(echo \${IP//./-} | cut -f3-4 -d-)"
fi
# Asignar nombre del equipo.
scutil --set ComputerName "\$HOST"
scutil --set LocalHostName "\$HOST"
scutil --set HostName "\$HOST"
hostname "\$HOST"
# Descromprimir ficheros de versión para obtener inventario de aplicaciones.
find /Applications -type d -name "*.app" -prune -exec \
ditto --nopreserveHFSCompression "{}/Contents/version.plist" "{}/Contents/version.plist.uncompress"
rm -f /osxpostconf # Borrar fichero indicador de psotconfiguración
fi
EOT
# Dar permiso de ejecución.
chmod 700 $MNTDIR/var/root/postconfd.sh
# Configurar nuevo agente OGAgent de sistema operativo.
ogConfigureOgagent $1 $2
;;
esac
exit 0
|