summaryrefslogtreecommitdiffstats
path: root/server
diff options
context:
space:
mode:
authorramon <ramongomez@us.es>2011-12-22 13:38:11 +0000
committerramon <ramongomez@us.es>2011-12-22 13:38:11 +0000
commitc3c7cb3ae6f6600223111a572050f34f2df6fa71 (patch)
tree96fce1db6bf64fee2845d3a48abcbe07d9937562 /server
parent4caea352de0d0a19d4e0a2e2dd04980dd28e6be0 (diff)
Congelar versión 1.0.2 en tags/opengnsys-1.0.2 (modifica #446).opengnsys-1.0.2
git-svn-id: https://opengnsys.es/svn/tags/opengnsys-1.0.2@2405 a21b9725-9963-47de-94b9-378ad31fedc9
Diffstat (limited to 'server')
-rwxr-xr-xserver/bin/listclientmode29
-rwxr-xr-xserver/bin/setclientmode80
-rwxr-xr-xserver/bin/setsmbpass59
-rw-r--r--server/etc/dhcpd.conf.tmpl2
-rw-r--r--server/etc/exports.tmpl3
-rw-r--r--server/etc/logrotate.tmpl24
-rw-r--r--server/etc/smb-og.conf.tmpl19
-rw-r--r--server/tftpboot/NetbootPXE.es.txt15
-rw-r--r--server/tftpboot/menu.lst/templates/ogadmin34
-rw-r--r--server/tftpboot/menu.lst/templates/pxe12
-rw-r--r--server/tftpboot/menu.lst/templates/pxeADMIN30
11 files changed, 229 insertions, 78 deletions
diff --git a/server/bin/listclientmode b/server/bin/listclientmode
index eddd4fd8..ba86f141 100755
--- a/server/bin/listclientmode
+++ b/server/bin/listclientmode
@@ -32,30 +32,21 @@ IDAULA=$(mysql -u "$USUARIO" -p"$PASSWORD" -D "$CATALOG" -N -e \
if [ -n "$IDAULA" ]; then
# Aula encontrada
- ETHERNET=$(mysql -u "$USUARIO" -p"$PASSWORD" -D "$CATALOG" -N -e \
- "SELECT mac FROM ordenadores WHERE idaula='$IDAULA';")
+ PCNAME=$(mysql -u "$USUARIO" -p"$PASSWORD" -D "$CATALOG" -N -e \
+ "SELECT nombreordenador FROM ordenadores WHERE idaula='$IDAULA';")
else
# Buscar ordenador
- ETHERNET=$(mysql -u "$USUARIO" -p"$PASSWORD" -D "$CATALOG" -N -e \
- "SELECT mac FROM ordenadores WHERE nombreordenador='$1';")
+ PCNAME=$(mysql -u "$USUARIO" -p"$PASSWORD" -D "$CATALOG" -N -e \
+ "SELECT nombreordenador FROM ordenadores WHERE nombreordenador='$1';")
fi
-if [ -z "$ETHERNET" ]; then
- echo "$PROG: No existe ningun aula o equipo con el nombre \"$1\""
+if [ -z "$PCNAME" ]; then
+ echo "$PROG: No existe ningún aula o equipo con el nombre \"$1\""
exit 1
fi
-for ETH in $ETHERNET; do
- AUX=$(echo $ETH | awk '{print tolower($0)}')
- AUX="01-${AUX:0:2}-${AUX:2:2}-${AUX:4:2}-${AUX:6:2}-${AUX:8:2}-${AUX:10:2}"
- PCNAME=$(mysql -u "$USUARIO" -p"$PASSWORD" -D "$CATALOG" -N -e \
- "SELECT nombreordenador FROM ordenadores WHERE mac='$ETH';")
- if [ -f $PXEDIR/$AUX ]; then
- INODE=$(ls -i $PXEDIR/$AUX | cut -f1 -d" ")
- TMPL=$(ls -i $PXEDIR | grep $INODE | grep -v "01-" | cut -f2 -d" ")
- [ -z "$TMPL" ] && TMPL="default"
- else
- TMPL="default"
- fi
- echo "Equipo $PCNAME ($ETH) asociado a plantilla \"$TMPL\""
+for PC in $PCNAME; do
+ PXE=$(mysql -u "$USUARIO" -p"$PASSWORD" -D "$CATALOG" -N -e \
+ "SELECT arranque FROM ordenadores WHERE nombreordenador='$PC';")
+ echo "Equipo $PC asociado a arranque tipo \"$PXE\""
done
diff --git a/server/bin/setclientmode b/server/bin/setclientmode
new file mode 100755
index 00000000..ecacf247
--- /dev/null
+++ b/server/bin/setclientmode
@@ -0,0 +1,80 @@
+#!/bin/bash
+# setclientmode: Configura el archivo de arranque de PXE para los clientes,
+# ya sea un equipo o un aula, generando enlaces a archivos usados como plantilla.
+# Nota: El archivo PXE por defecto "default" se deja en modo de ejecución "user"
+# y se eliminan los enlaces para equipos con la plantilla por defecto.
+# Uso: clienmode NombrePlatilla { NombrePC | NombreAula }
+# Autores: Irina Gomez y Ramon Gomez - Univ. Sevilla, noviembre 2010
+
+
+# Variables.
+PROG=$(basename $0)
+OPENGNSYS=${OPENGNSYS:-"/opt/opengnsys"}
+SERVERCONF=$OPENGNSYS/etc/ogAdmServer.cfg
+PXEDIR=$OPENGNSYS/tftpboot/menu.lst
+TEMPLATE="$PXEDIR/templates/$1"
+LOGFILE=$OPENGNSYS/log/opengnsys.log
+
+# Control básico de errores.
+if [ $# -ne 2 ]; then
+ echo "$PROG: Error de ejecución"
+ echo "Formato: $PROG Archivo_platilla [NOMBRE_PC|NOMBRE_AULA]"
+ exit 1
+fi
+if [ ! -r $SERVERCONF ]; then
+ echo "$PROG: Sin acceso a fichero de configuración"
+ exit 2
+fi
+if [ ! -e $TEMPLATE ]; then
+ echo "No existe archivo platilla: $TEMPLATE"
+ exit
+fi
+
+# Obtener datos de acceso a la Base de datos.
+source $SERVERCONF
+# Comprobar si se recibe nombre de aula o de equipo.
+IDAULA=$(mysql -u "$USUARIO" -p"$PASSWORD" -D "$CATALOG" -N -e \
+ "SELECT idaula FROM aulas WHERE nombreaula=\"$2\";")
+
+if [ -n "$IDAULA" ]; then
+ # Aula encontrada
+ ETHERNET=$(mysql -u "$USUARIO" -p"$PASSWORD" -D "$CATALOG" -N -e \
+ "SELECT mac FROM ordenadores WHERE idaula=\"$IDAULA\";")
+else
+ # Buscar ordenador
+ ETHERNET=$(mysql -u "$USUARIO" -p"$PASSWORD" -D "$CATALOG" -N -e \
+ "SELECT mac FROM ordenadores WHERE nombreordenador=\"$2\";")
+fi
+if [ -z "$ETHERNET" ]; then
+ date +"%b %d %T $PROG: No existe aula o equipo con el nombre \"$2\"" | tee -a $LOGFILE
+ exit 1
+fi
+
+# Copiar fichero de configuración y actualizar base de datos.
+date +"%b %d %T $PROG: Configurando \"$1\" en \"$2\"" | tee -a $LOGFILE
+NPC=0
+for AUX in $ETHERNET; do
+ date +"%b %d %T $PROG: Detectada ethernet \"$AUX\" en \"$2\"" | tee -a $LOGFILE
+ AUX="01-${AUX:0:2}-${AUX:2:2}-${AUX:4:2}-${AUX:6:2}-${AUX:8:2}-${AUX:10:2}"
+ # Si existe anteriormente lo borra
+ [ -e $PXEDIR/$AUX ] && rm $PXEDIR/$AUX
+ if [ "$1" != "default" ]; then
+ cp -a $TEMPLATE $PXEDIR/$AUX
+ DATOS=$(mysql -u "$USUARIO" -p"$PASSWORD" -D "$CATALOG" -N -e \
+ "SELECT ordenadores.ip, ':', repositorios.ip, ':',
+ aulas.router, ':', aulas.netmask, ':',
+ ordenadores.netiface, ':none group=',
+ REPLACE (aulas.nombreaula, ' ', '_')
+ FROM ordenadores
+ JOIN aulas ON ordenadores.idaula=aulas.idaula
+ JOIN repositorios ON ordenadores.idrepositorio=repositorios.idrepositorio
+ WHERE ordenadores.mac=\"$ETHERNET\";")
+ DATOS=$(echo ${DATOS// /} | tr 'áéíóúñÁÉÍÓÚÑ' 'aeiounAEIOUN')
+ perl -pi -e "s/INFOHOST/$DATOS/g" $PXEDIR/$AUX
+ mysql -u "$USUARIO" -p"$PASSWORD" -D "$CATALOG" -N -e \
+ "UPDATE ordenadores SET arranque=\"$1\" WHERE mac=\"$ETHERNET\";"
+ fi
+ let NPC=NPC+1
+done
+date +"%b %d %T $PROG: $NPC equipo(s) configurado(s)" | tee -a $LOGFILE
+
diff --git a/server/bin/setsmbpass b/server/bin/setsmbpass
new file mode 100755
index 00000000..2c239601
--- /dev/null
+++ b/server/bin/setsmbpass
@@ -0,0 +1,59 @@
+#!/bin/bash
+# setsmbpass: cambia la contraseña del usuario del cliente para acceder a los
+# servicios Samba.
+# Nota: se modifica el Initrd del cliente y se cambia la clave en el servidor.
+# Nota: no se modifica el usuario de acceso (usuario "opengnsys").
+# Uso: setsmbpass
+# Autor: Ramon Gomez - Univ. Sevilla, julio 2011
+
+
+# Variables.
+PROG=$(basename $0)
+OPENGNSYS=${OPENGNSYS:-"/opt/opengnsys"}
+SAMBAUSER="opengnsys" # Usuario por defecto.
+CLIENTINITRD=$OPENGNSYS/tftpboot/ogclient/oginitrd.img
+TMPDIR=/tmp/ogclient$$
+
+# Control básico de errores.
+if [ $# != 0 ]; then
+ echo "$PROG: Error de ejecución" >&2
+ echo "Formato: $PROG"
+ exit 1
+fi
+if [ "$USER" != "root" ]; then
+ echo "$PROG: Error: solo ejecutable por root" >&2
+ exit 1
+fi
+
+# Crear clave para usuario de acceso a los recursos.
+if [ -r $CLIENTINITRD ]; then
+ stty -echo 2>/dev/null
+ echo -n "Clave del usuario Samba: "
+ read SAMBAPASS
+ echo
+ echo -n "Confirmar clave: "
+ read SAMBAPASS2
+ echo
+ stty echo 2>/dev/null
+ if [ "$SAMBAPASS" != "$SAMBAPASS2" ]; then
+ echo "$PROG: Error: las claves no coinciden" >&2
+ exit 2
+ fi
+ # Editar la parte de acceso del cliente:
+ # descomprimir Initrd, sustituir clave y recomprimir Initrd).
+ mkdir -p $TMPDIR
+ cd $TMPDIR
+ gzip -dc $CLIENTINITRD | cpio -im
+ if [ -f scripts/ogfunctions ]; then
+ sed -i "s/OPTIONS=\(.*\)user=\w*\(.*\)pass=\w*\(.*\)/OPTIONS=\1user=$SAMBAUSER\2pass=$SAMBAPASS\3/" scripts/ogfunctions
+ find . | cpio -H newc -oa | gzip -9c > $CLIENTINITRD
+ else
+ echo "$PROG: Aviso: no se ha modificado la clave del cliente."
+ fi
+ rm -fr $TMPDIR
+else
+ SAMBAPASS="og" # Clave por defecto.
+ echo "$PROG: Aviso: no se ha modificado la clave del cliente."
+fi
+echo -ne "$SAMBAPASS\n$SAMBAPASS\n" | smbpasswd -a -s $SAMBAUSER
+
diff --git a/server/etc/dhcpd.conf.tmpl b/server/etc/dhcpd.conf.tmpl
index 687bbf0f..fb6afa00 100644
--- a/server/etc/dhcpd.conf.tmpl
+++ b/server/etc/dhcpd.conf.tmpl
@@ -10,7 +10,7 @@ subnet NETIP netmask NETMASK {
default-lease-time 600;
max-lease-time 7200;
next-server SERVERIP;
- filename "pxelinux.0";
+ filename "grldr";
use-host-decl-names on;
# host HOSTNAME1 {
diff --git a/server/etc/exports.tmpl b/server/etc/exports.tmpl
deleted file mode 100644
index 5b30216b..00000000
--- a/server/etc/exports.tmpl
+++ /dev/null
@@ -1,3 +0,0 @@
-/opt/opengnsys/client NETIP/NETMASK(ro,no_subtree_check,no_root_squash,sync)
-/opt/opengnsys/images NETIP/NETMASK(rw,no_subtree_check,no_root_squash,sync,crossmnt)
-/opt/opengnsys/log/clients NETIP/NETMASK(rw,no_subtree_check,no_root_squash,sync) \ No newline at end of file
diff --git a/server/etc/logrotate.tmpl b/server/etc/logrotate.tmpl
new file mode 100644
index 00000000..abe436d1
--- /dev/null
+++ b/server/etc/logrotate.tmpl
@@ -0,0 +1,24 @@
+# Los archivos se copian y luego se corta el original, para que los equipos puedan seguir escribiendo sobre ellos
+# Las copias se comprimen
+# Clientes: se guardan 500K de cada cliente: se rotan cuando llegan a 100K y se guardan 5
+# Mcastlog: se guardan dos semanas.
+# servicios opengnsys y tracker: se guardan 4 semanas
+
+
+copytruncate
+compress
+OPENGNSYSDIR/log/clients/*.log {
+ rotate 5
+ size 100k
+}
+
+OPENGNSYSDIR/log/mcastlog/ogAdmRepoMcast.*([-0-9]) {
+ rotate 2
+ weekly
+}
+
+OPENGNSYSDIR/log/bttrack.log OPENGNSYSDIR/log/ogAdmRepo.log OPENGNSYSDIR/log/ogAdmServer.log {
+ rotate 4
+ weekly
+}
+
diff --git a/server/etc/smb-og.conf.tmpl b/server/etc/smb-og.conf.tmpl
index 1ee7024c..894bbc72 100644
--- a/server/etc/smb-og.conf.tmpl
+++ b/server/etc/smb-og.conf.tmpl
@@ -1,37 +1,30 @@
[tftpboot]
comment = el directorio fisico ogclient debe estar como escritura
+ browseable = no
writeable = no
- read only = yes
- #locking = no
path = /var/lib/tftpboot
guest ok = no
-#[ogboot]
-# comment = OpenGnSys Boot
-# writeable = no
-# read only = yes
-# #locking = no
-# path = /var/lib/tftpboot
-# guest ok = no
-
[ogclient]
comment = OpenGnSys Client
- read only = yes
+ browseable = no
+ writeable = no
locking = no
path = OPENGNSYSDIR/client
guest ok = no
[oglog]
comment = OpenGnSys Log
- read only = no
+ browseable = no
writeable = yes
path = OPENGNSYSDIR/log/clients
guest ok = no
[ogimages]
comment = OpenGnSys Repository
- read only = no
+ browseable = no
writeable = yes
locking = no
path = OPENGNSYSDIR/images
guest ok = no
+
diff --git a/server/tftpboot/NetbootPXE.es.txt b/server/tftpboot/NetbootPXE.es.txt
index e467b763..3efd8371 100644
--- a/server/tftpboot/NetbootPXE.es.txt
+++ b/server/tftpboot/NetbootPXE.es.txt
@@ -2,11 +2,10 @@ Como cambiar el arranque en red PXELinux por Grub4DOS
=====================================================
-OpenGnSys usa como gestor PXE el binario pxelinux.0
+OpenGnSys 1.0.1 usa como gestor PXE el binario pxelinux.0, sin embargo, la actulización a OpenGnSys 1.0.2 sustituye automáticamente dicho gestor por Grub4Dos.
-También ofrece la posibilidad de usar el bianrio grldr que se está evaluando para solucionar algunas incidencias.
-
+Realizar los siguientes pasos para sutituir "a mano" PXELinux por Grub4Dos como gestor de arranque sin usar el proceso de actualización de OpenGnSys.
Activar el grldr del grub4dos
@@ -16,11 +15,15 @@ Activar el grldr del grub4dos
/etc/init.d/dhcpd restart
3) Renombrar cambiar el gestor de arranque de la web, para que use grldr.
cp /opt/opengnsys/www/principal/boot.php /opt/opengnsys/www/principal/boot.pxelinux.php
- cp /opt/opengnsys/www/principal/boot.grub4dos.php /opt/opengnsys/www/principal/boot.php
+ cp /opt/opengnsys/www/principal/boot.grub4dos.php /opt/opengnsys/www/principal/boot.php
+
+ cp /opt/opengnsys/www/gestores/gestor_pxe.php /opt/opengnsys/www/gestores/gestor_pxe.pxelinux.php
+ cp /opt/opengnsys/www/gestores/gestor_pxe_grub4dos.php /opt/opengnsys/www/gestores/gestor_pxe.php
-4) En la funcion ogBoot, de la libreria Boot.lib descomentar los comentarios del if de las líneas 71 a 85, para que quede
+4)
+En la funcion ogBoot, de la libreria Boot.lib descomentar los comentarios del if de las líneas 71 a 85, para que quede
#FIXME: activar seguimiento inicio sesion XP con grub4dos
- if `ogGetOsVersion $1 $2 | grep "XP" > /dev/null`
+ if `ogGetOsVersion $1 $2 | grep "Windows" > /dev/null`
then
dd if=/dev/zero of=${MNTDIR}/ogboot.me bs=1024 count=3
dd if=/dev/zero of=${MNTDIR}/ogboot.firstboot bs=1024 count=3
diff --git a/server/tftpboot/menu.lst/templates/ogadmin b/server/tftpboot/menu.lst/templates/ogadmin
new file mode 100644
index 00000000..a8d96209
--- /dev/null
+++ b/server/tftpboot/menu.lst/templates/ogadmin
@@ -0,0 +1,34 @@
+default saved
+timeout 1
+hiddenmenu
+fallback 1 2 3
+
+title firsboot
+find --set-root --ignore-floppies --ignore-cd /ogboot.me
+cmp /ogboot.me /ogboot.firstboot || ls FALLBACK
+write /ogboot.firstboot iniciado
+chainloader +1
+savedefault fallback
+boot
+
+title secondboot
+find --set-root --ignore-floppies --ignore-cd /ogboot.me
+cmp /ogboot.me /ogboot.secondboot || ls FALLBACK
+write /ogboot.secondboot iniciado
+chainloader +1
+savedefault fallback
+boot
+
+title OpenGnSys-CACHE
+find --set-root --ignore-floppies --ignore-cd /boot/ogvmlinuz
+kernel /boot/ogvmlinuz ro boot=oginit vga=788 irqpoll acpi=on og2nd=sqfs ogprotocol=smb ogactiveadmin=true ogdebug=true INFOHOST
+initrd /boot/oginitrd.img
+savedefault fallback
+boot
+
+title OpenGnSys-NET
+keeppxe
+kernel (pd)/ogclient/ogvmlinuz ro boot=oginit vga=788 irqpoll acpi=on og2nd=sqfs ogprotocol=smb ogactiveadmin=true ogdebug=true INFOHOST
+initrd (pd)/ogclient/oginitrd.img
+boot
+
diff --git a/server/tftpboot/menu.lst/templates/pxe b/server/tftpboot/menu.lst/templates/pxe
index c7ef01fb..00d1a455 100644
--- a/server/tftpboot/menu.lst/templates/pxe
+++ b/server/tftpboot/menu.lst/templates/pxe
@@ -19,20 +19,16 @@ chainloader +1
savedefault fallback
boot
-title OpenGnsys-CACHE
+title OpenGnSys-CACHE
find --set-root --ignore-floppies --ignore-cd /boot/ogvmlinuz
-kernel /boot/ogvmlinuz ro boot=oginit vga=788 irqpoll acpi=on og2nd=sqfs ogprotocol=smb ogactiveadmin=false ogdebug=false INFOHOST
+kernel /boot/ogvmlinuz ro boot=oginit quiet splash vga=788 irqpoll acpi=on og2nd=sqfs ogprotocol=smb ogactiveadmin=false ogdebug=false INFOHOST
initrd /boot/oginitrd.img
savedefault fallback
boot
-title OpenGnsys-NET
+title OpenGnSys-NET
keeppxe
-kernel (pd)/ogclient/ogvmlinuz ro boot=oginit vga=788 irqpoll acpi=on og2nd=sqfs ogprotocol=smb ogactiveadmin=false ogdebug=false INFOHOST
+kernel (pd)/ogclient/ogvmlinuz ro boot=oginit quiet splash vga=788 irqpoll acpi=on og2nd=sqfs ogprotocol=smb ogactiveadmin=false ogdebug=false INFOHOST
initrd (pd)/ogclient/oginitrd.img
boot
-
-
-
-
diff --git a/server/tftpboot/menu.lst/templates/pxeADMIN b/server/tftpboot/menu.lst/templates/pxeADMIN
index 0dd603ce..cf58dabf 100644
--- a/server/tftpboot/menu.lst/templates/pxeADMIN
+++ b/server/tftpboot/menu.lst/templates/pxeADMIN
@@ -3,36 +3,10 @@ timeout 1
hiddenmenu
fallback 1 2 3
-title firsboot
-find --set-root --ignore-floppies --ignore-cd /ogboot.me
-cmp /ogboot.me /ogboot.firstboot || ls FALLBACK
-write /ogboot.firstboot iniciado
-chainloader +1
-savedefault fallback
-boot
-
-title secondboot
-find --set-root --ignore-floppies --ignore-cd /ogboot.me
-cmp /ogboot.me /ogboot.secondboot || ls FALLBACK
-write /ogboot.secondboot iniciado
-chainloader +1
-savedefault fallback
-boot
-
-title OpenGnsys-CACHE
-find --set-root --ignore-floppies --ignore-cd /boot/ogvmlinuz
-kernel /boot/ogvmlinuz ro boot=oginit vga=788 irqpoll acpi=on og2nd=sqfs ogprotocol=smb ogactiveadmin=true ogdebug=true INFOHOST
-initrd /boot/oginitrd.img
-savedefault fallback
-boot
-title OpenGnsys-NET
+title OpenGnSys-NET
keeppxe
-kernel (pd)/ogclient/ogvmlinuz ro boot=oginit vga=788 irqpoll acpi=on og2nd=sqfs ogprotocol=smb ogactiveadmin=true ogdebug=true INFOHOST
+kernel (pd)/ogclient/ogvmlinuz ro boot=oginit vga=788 irqpoll acpi=on og2nd=sqfs ogprotocol=smb ogactiveadmin=true ogdebug=true ogupdateinitrd=true INFOHOST
initrd (pd)/ogclient/oginitrd.img
boot
-
-
-
-