diff options
author | ramon <ramongomez@us.es> | 2011-12-22 13:25:03 +0000 |
---|---|---|
committer | ramon <ramongomez@us.es> | 2011-12-22 13:25:03 +0000 |
commit | 71643c0e27cc207f31979e27c3319decc0eb18cb (patch) | |
tree | 96fce1db6bf64fee2845d3a48abcbe07d9937562 /server | |
parent | 4caea352de0d0a19d4e0a2e2dd04980dd28e6be0 (diff) |
Integrar versión 1.0.2 en rama trunk (modificar #464).
git-svn-id: https://opengnsys.es/svn/trunk@2404 a21b9725-9963-47de-94b9-378ad31fedc9
Diffstat (limited to 'server')
-rwxr-xr-x | server/bin/listclientmode | 29 | ||||
-rwxr-xr-x | server/bin/setclientmode | 80 | ||||
-rwxr-xr-x | server/bin/setsmbpass | 59 | ||||
-rw-r--r-- | server/etc/dhcpd.conf.tmpl | 2 | ||||
-rw-r--r-- | server/etc/exports.tmpl | 3 | ||||
-rw-r--r-- | server/etc/logrotate.tmpl | 24 | ||||
-rw-r--r-- | server/etc/smb-og.conf.tmpl | 19 | ||||
-rw-r--r-- | server/tftpboot/NetbootPXE.es.txt | 15 | ||||
-rw-r--r-- | server/tftpboot/menu.lst/templates/ogadmin | 34 | ||||
-rw-r--r-- | server/tftpboot/menu.lst/templates/pxe | 12 | ||||
-rw-r--r-- | server/tftpboot/menu.lst/templates/pxeADMIN | 30 |
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 - - - - |