blob: a5cbcc5767cf376305c0623fb0e6038670fe1a38 (
plain)
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
|
#!/bin/bash
# installoglive - descarga e instala cliente ogLive.
# Nota: El usuario debe elegir el número del ogLive que desea instalar.
# Uso: installoglive
# Autor: Ramón M. Gómez - ETSII Univ. Sevilla
# Fecha: 2015-01-26
# Versión: 1.0.6b - Adaptar la versión de Rsync de cliente y servidor.
# Autor: Ramón M. Gómez - ETSII Univ. Sevilla
# Fecha: 2015-12-16
# Control de acceso.
PROG=$(basename $0)
if [ "$USER" != "root" ]; then
echo "$PROG: Need to be root." >&2
exit 1
fi
# Constantes.
DOWNLOADURL="http://opengnsys.es/downloads"
OPENGNSYS=/opt/opengnsys
OGINITRD=$OPENGNSYS/tftpboot/ogclient/oginitrd.img
OGVMLINUZ=$OPENGNSYS/tftpboot/ogclient/ogvmlinuz
# Listar todos los ficheros ogLive que pueden ser descargados.
OGLIVE=( $(wget $DOWNLOADURL -O - 2>/dev/null|grep ogLive.*iso) )
NISOS=${#OGLIVE[@]}
echo "Descargas disponibles (+- = instalado):"
for i in $(seq 1 $NISOS); do
[ -e $OPENGNSYS/lib/${OGLIVE[i-1]} ] && OGLIVE[i-1]="+-${OGLIVE[i-1]}"
done
select opt in ${OGLIVE[@]}; do
[ -n "$opt" ] && OGLIVEFILE=${opt/+-/} && break
done
# Tamaño del fichero a descargar.
SOURCELENGTH=$(LANG=C wget --spider $DOWNLOADURL/$OGLIVEFILE 2>&1 | awk '/Length:/ {print $2}')
[ -n "$SOURCELENGTH" ] || exit
# Descarga de ogLive.
TARGETFILE=$OPENGNSYS/lib/$OGLIVEFILE
wget $DOWNLOADURL/$OGLIVEFILE -O $TARGETFILE || exit
# Obtener la clave actual de acceso a Samba para restaurarla tras la descarga.
if [ -f $OGINITRD ]; then
SAMBAPASS=$(gzip -dc $OGINITRD | \
cpio -i --to-stdout scripts/ogfunctions 2>&1 | \
grep "^[ ].*OPTIONS=" | \
sed 's/\(.*\)pass=\(\w*\)\(.*\)/\2/')
fi
# Hacer copia de seguridad del ogLive actual.
rm -fr $OPENGNSYS/tftpboot/ogclient.old
mv -f $OPENGNSYS/tftpboot/ogclient $OPENGNSYS/tftpboot/ogclient.old
# Montar la imagen ISO del ogclient, actualizar ficheros y desmontar.
TMPDIR=/tmp/${OGLIVEFILE%.iso}
mkdir -p $TMPDIR
mount -o loop,ro $TARGETFILE $TMPDIR
cp -va $TMPDIR/ogclient $OPENGNSYS/tftpboot/ogclient
umount $TMPDIR
# Recuperar la clave de acceso a Samba o solicitar una nueva clave.
if [ -n "$SAMBAPASS" ]; then
echo -ne "$SAMBAPASS\n$SAMBAPASS\n" | $OPENGNSYS/bin/setsmbpass
else
$OPENGNSYS/bin/setsmbpass
fi
# Establecer los permisos.
find -L $OPENGNSYS/tftpboot/ogclient -type d -exec chmod 755 {} \;
find -L $OPENGNSYS/tftpboot/ogclient -type f -exec chmod 644 {} \;
chown -R :opengnsys $OPENGNSYS/tftpboot/ogclient
# Ofrecer md5 del kernel y vmlinuz para ogupdateinitrd en cache
cp -av $OPENGNSYS/tftpboot/ogclient/{ogvmlinuz,oginitrd.img}* $OPENGNSYS/tftpboot
# Montar SquashFS para comprobar versión de Rsync.
mount -o loop,ro $OPENGNSYS/tftpboot/ogclient/ogclient.sqfs $TMPDIR
# Si versión Rsync de servidor > cliente, enlazar a fichero compilado.
RSYNCSERV=$(rsync --version 2>/dev/null | awk '/protocol/ {print $6}')
RSYNCCLNT=$(chroot $TMPDIR /usr/bin/rsync --version 2>/dev/null | awk '/protocol/ {print $6}')
if [ -z "$RSYNCSERV" -o ${RSYNCSERV:-0} -gt ${RSYNCCLNT:-1} ]; then
[ -e $OPENGNSYS/client/bin/rsync-$RSYNCSERV ] && mv -f $OPENGNSYS/client/bin/rsync-$RSYNCSERV $OPENGNSYS/client/bin/rsync
else
# Si no, renombrar fichero compilado con nº de protocolo.
[ -e $OPENGNSYS/client/bin/rsync ] && mv -f $OPENGNSYS/client/bin/rsync $OPENGNSYS/client/bin/rsync-$($OPENGNSYS/client/bin/rsync --version 2>/dev/null | awk '/protocol/ {print $6}')
fi
# Desmontar SquashFS.
umount $TMPDIR
rmdir $TMPDIR
# Versión del ogLive instalado
echo "${OGLIVEFILE%.*}" > $OPENGNSYS/doc/veroglive.txt
|