diff options
-rwxr-xr-x | admin/Interface/CambiarAcceso | 33 | ||||
-rw-r--r-- | admin/Sources/Clients/ogAdmClient/sources/ogAdmClient.h | 49 | ||||
-rwxr-xr-x | client/engine/Image.lib | 3 | ||||
-rwxr-xr-x | client/engine/Protocol.lib.testing | 676 | ||||
-rwxr-xr-x | client/engine/System.lib | 19 | ||||
-rwxr-xr-x | client/shared/etc/init/defaultTESTING.sh | 49 | ||||
-rwxr-xr-x | client/shared/etc/preinit/loadudeb.sh.NoUsed | 27 | ||||
-rwxr-xr-x | client/shared/etc/preinit/metadevs.sh.NoUsed | 28 | ||||
-rwxr-xr-x | client/shared/scripts/createImage | 31 | ||||
-rwxr-xr-x | server/bin/setclientmode | 68 |
10 files changed, 9 insertions, 974 deletions
diff --git a/admin/Interface/CambiarAcceso b/admin/Interface/CambiarAcceso index 38cc5ab1..ddd67666 100755 --- a/admin/Interface/CambiarAcceso +++ b/admin/Interface/CambiarAcceso @@ -5,12 +5,6 @@ # PARAMETROS RECIBIDOS DESDE EL CLIENTE # $1 modo (admin, user) #_______________________________________________________________________________________________________________________________ -### codigos de error -#$OG_ERR_NOTEXEC = 7 La llamada no se ha realizado desde OGclient. -#$OG_ERR_NOTFOUND = 2 Repositorio no montado. -#$OG_ERR_LOCKED = 4 Repositorio bloqueado. -#$OG_ERR_NOTWRITE = 14 No Se ha realizado el montaje RW correctamente. - # Error si llamada no se realliza desde OpenGnSys Client. PROG=$(basename $0) @@ -20,7 +14,7 @@ if [ "$CALLER" != "CrearImagen" -a "$CALLER" != "ConsolaRemota" ]; then exit $? fi -# Salir si el repositorio est� bloquedo (tiene ficheros abiertos). +# Salir si el repositorio está bloquedo (tiene ficheros abiertos). REPOIP=$(ogGetRepoIp) if [ -z "$REPOIP" ]; then ogRaiseError $OG_ERR_NOTFOUND "repo no montado" @@ -53,28 +47,3 @@ case "$PROTO" in smb) mount -t cifs //$REPOIP/ogimages $OGIMG -o $MODE,serverino,acl,username=opengnsys,password=og ;; esac -#Comprobamos que el tipo de acceso (escritura/lectura) se ha realizado correctamente. -FILETEST="${OGIMG}/testWrite.txt" -touch $FILETEST -VALUE=$? - -case "$1" in - admin) - if [ "$VALUE" == 0 ] - then - rm $FILETEST - else - ogRaiseError $OG_ERR_NOTWRITE "sin acceso de escritura en modo admin" - exit $? - fi - ;; - user) - if [ "$VALUE" == 0 ] - then - rm $FILETEST - ogRaiseError $OG_ERR_NOTWRITE "Warning: con acceso de escritura en modo user" - exit $? - fi - ;; -esac - diff --git a/admin/Sources/Clients/ogAdmClient/sources/ogAdmClient.h b/admin/Sources/Clients/ogAdmClient/sources/ogAdmClient.h index f39df68c..976c393c 100644 --- a/admin/Sources/Clients/ogAdmClient/sources/ogAdmClient.h +++ b/admin/Sources/Clients/ogAdmClient/sources/ogAdmClient.h @@ -70,56 +70,9 @@ char* tbErroresScripts[]={"Se han generado errores. No se puede continuar la eje "011-La información retornada por la interface de administración excede de la longitud permitida",\ "012-Error en el envÃo de fichero por la red",\ "013-Error en la creación del proceso hijo",\ - "014-Error de escritura en destino",\ - "015-Sin Cache en el Cliente",\ - "016-No hay espacio en la cache para almacenar fichero-imagen",\ - "017-Error al Reducir el Sistema Archivos",\ - "018-Error al Expandir el Sistema Archivos",\ - "019-Error no definido",\ - "020-Error no definido",\ - "021-Error no definido",\ - "022-Error no definido",\ - "023-Error no definido",\ - "024-Error no definido",\ - "025-Error no definido",\ - "026-Error no definido",\ - "027-Error no definido",\ - "028-Error no definido",\ - "029-Error no definido",\ - "030-Error al restaurar imagen - Imagen mas grande que particion",\ - "031-Error no definido",\ - "032-Error no definido",\ - "033-Error no definido",\ - "034-Error no definido",\ - "035-Error no definido",\ - "036-Error no definido",\ - "037-Error no definido",\ - "038-Error no definido",\ - "039-Error no definido",\ - "040-Error no definido",\ - "041-Error no definido",\ - "042-Error no definido",\ - "043-Error no definido",\ - "044-Error no definido",\ - "045-Error no definido",\ - "046-Error no definido",\ - "047-Error no definido",\ - "048-Error no definido",\ - "049-Error no definido",\ - "050-Error en la generación de sintaxis de transferenica unicast",\ - "051-Error en envio UNICAST de una particion",\ - "052-Error en envio UNICAST de un fichero",\ - "053-Error en la recepcion UNICAST de una particion",\ - "054-Error en la recepcion UNICAST de un fichero",\ - "055-Error en la generacion de sintaxis de transferenica Multicast",\ - "056-Error en envio MULTICAST de un fichero",\ - "057-Error en la recepcion MULTICAST de un fichero",\ - "058-Error en envio MULTICAST de una particion",\ - "059-Error en la recepcion MULTICAST de una particion",\ - "060-Error en la conexion de una sesion UNICAST|MULTICAST con el MASTER",\ "Error desconocido " }; - #define MAXERRORSCRIPT 999 // Error máximo cometido + #define MAXERRORSCRIPT 14 // Error máximo cometido // ________________________________________________________________________________________________________ // Prototipo de funciones // ________________________________________________________________________________________________________ diff --git a/client/engine/Image.lib b/client/engine/Image.lib index c85354a1..399e3da1 100755 --- a/client/engine/Image.lib +++ b/client/engine/Image.lib @@ -457,7 +457,6 @@ touch $IMGDIR/$(basename "${!#}").lock #@exception OG_ERR_NOTFOUND fichero de imagen o partición no detectados. #@exception OG_ERR_LOCKED partición bloqueada por otra operación. #@exception OG_ERR_IMAGE error al restaurar la imagen del sistema. -#@exception OG_ERR_IMGSIZEPARTITION Tamaño de la particion es menor al tamaño de la imagen. #@todo Comprobar incongruencias partición-imagen, control de errores, definir parámetros, caché/repositorio, etc. #@version 0.1 - Integracion para Opengnsys - HIDRA:RestaurarImagen{EXT3, NTFS}.sh; EAC: RestorePartitionFromImage() en Deploy.lib #@author Ramon Gomez, ETSII Universidad de Sevilla @@ -491,7 +490,7 @@ IMGFILE=$(ogGetPath "$1" "$2.$IMGTYPE") IMGSIZE=$(ogGetImageSize "$1" "$2") PARTSIZE=$(ogGetPartitionSize $3 $4) if [ $IMGSIZE -gt $PARTSIZE ]; then - ogRaiseError $OG_ERR_IMGSIZEPARTITION "$IMGSIZE > $PARTSIZE" + ogRaiseError $OG_ERR_PARTITION "$IMGSIZE > $PARTSIZE" return $? fi diff --git a/client/engine/Protocol.lib.testing b/client/engine/Protocol.lib.testing deleted file mode 100755 index 8186ed7b..00000000 --- a/client/engine/Protocol.lib.testing +++ /dev/null @@ -1,676 +0,0 @@ -#!/bin/bash -#/** -#@file Protocol.lib -#@brief LibrerÃa o clase Protocol -#@class FileTransfer -#@brief Funciones para transmisión de datos -#@version 0.91 -#@warning License: GNU GPLv3+ -#*/ - - - - - -#/** -# ogMcastSyntax -#@brief Función para generar la instrucción de ejucción la transferencia de datos multicast -#@param 1 Tipo de operación [ SENDPARTITION RECEIVERPARTITION SENDFILE RECEIVERFILE ] -#@param 2 Sesión Mulicast -#@param 3 Dispositivo (opción PARTITION) o fichero(opción FILE) que será enviado. -#@param 4 Tools de clonación (opcion PARTITION) -#@param 5 Tools de compresion (opcion PARTITION) -#@return instrucción para ser ejecutada. -#@exception OG_ERR_FORMAT formato incorrecto. -#@note Requisitos: upd-cast 2009 -#@todo localvar check versionudp -#@version 0.91 - Definición de FileTransfer -#@author Antonio Doblas Viso, Universidad de Málaga -#@date 2010/05/09 -#*/ ## -#/** -# - - -function ogMcastSyntax () -{ - -local ISUDPCAST PARM SESSION SESSIONPARM MODE PORTBASE PERROR -local METHOD ADDRESS BITRATE NCLIENTS MAXTIME CERROR -local TOOL LEVEL DEVICE MBUFFER SYNTAXSERVER SYNTAXCLIENT - -# Si se solicita, mostrar ayuda. -if [ "$*" == "help" -o "$2" == "help" ]; then - ogHelp "$FUNCNAME SENDPARTITION str_sessionSERVER str_device str_tools str_level" \ - "$FUNCNAME RECEIVERPARTITION str_sessionCLIENT str_device str_tools str_level "\ - "$FUNCNAME SENDFILE str_sessionSERVER str_file "\ - "$FUNCNAME RECEIVERFILE str_sessionCLIENT str_file " \ - "sessionServer syntax: portbase:method:mcastaddress:speed:nclients:ntimeWaitingUntilNclients " \ - "sessionServer example: 9000:full-duplex|half-duplex|broadcast:239.194.17.36:80M:50:60 " \ - "sessionClient syntax: portbase " \ - "sessionClient example: 9000 " - return -fi -PERROR=0 - -#si no tenemos updcast o su version superior 2009 udpcast error. -ISUDPCAST=$(udp-receiver --help 2>&1) -echo $ISUDPCAST | grep start-timeout > /dev/null || ogRaiseError $OG_ERR_FORMAT "upd-cast no existe o version antigua -requerida 2009-"|| return $? - - -# Error si no se reciben $PARM parámetros. -echo "$1" | grep "PARTITION" > /dev/null && PARM=5 || PARM=3 -[ "$#" -eq "$PARM" ] || ogRaiseError $OG_ERR_FORMAT "sin parametros"|| return $? - - -# 1er param check -ogCheckStringInGroup "$1" "SENDPARTITION sendpartition RECEIVERPARTITION receiverpartition SENDFILE sendfile RECEIVERFILE receiverfile" || ogRaiseError $OG_ERR_FORMAT "1st param: $1" || PERROR=1 #return $? - -# 2º param check -echo "$1" | grep "SEND" > /dev/null && MODE=server || MODE=client - -#TODO: diferenciamos los paramatros especificos de la sessión multicast -#SI: controlamos todos los parametros de la sessión multicast. -[ $MODE == "client" ] && SESSIONPARM=1 || SESSIONPARM=6 -OIFS=$IFS; IFS=':' ; SESSION=($2); IFS=$OIFS - - -[[ ${#SESSION[*]} == $SESSIONPARM ]] || ogRaiseError $OG_ERR_FORMAT "parametros session multicast no completa" || PERROR=2# return $? - - -#controlamos el PORTBASE de la sesion. Comun.- -PORTBASE=${SESSION[0]} -ogCheckStringInGroup ${SESSION[0]} "9000 9002 9004 9006 9008 9010" || ogRaiseError $OG_ERR_FORMAT "McastSession portbase ${SESSION[0]}" || PERROR=3 #return $? -if [ $MODE == "server" ] -then - ogCheckStringInGroup ${SESSION[1]} "full-duplex FULL-DUPLEX half-duplex HALF-DUPLEX broadcast BROADCAST" || ogRaiseError $OG_ERR_FORMAT "McastSession method ${SESSION[1]}" || PERROR=4 #return $? - METHOD=${SESSION[1]} - ogCheckIpAddress ${SESSION[2]} || ogRaiseError $OG_ERR_FORMAT "McastSession address ${SESSION[2]}" || PERROR=5 #return $? - ADDRESS=${SESSION[2]} - ogCheckStringInReg ${SESSION[3]} "^[0-9]{1,2}\M$" || ogRaiseError $OG_ERR_FORMAT "McastSession bitrate ${SESSION[3]}" || PERROR=6 # return $? - BITRATE=${SESSION[3]} - ogCheckStringInReg ${SESSION[4]} "^[0-9]{1,10}$" || ogRaiseError $OG_ERR_FORMAT "McastSession nclients ${SESSION[4]}" || PERROR=7 # return $? - NCLIENTS=${SESSION[4]} - ogCheckStringInReg ${SESSION[5]} "^[0-9]{1,10}$" || ogRaiseError $OG_ERR_FORMAT "McastSession maxtime ${SESSION[5]}" || PERROR=8 # return $? - MAXTIME=${SESSION[5]} -fi - -#3er param check - que puede ser un dispositvo o un fichero. -#ogGetPath "$3" > /dev/null || ogRaiseError $OG_ERR_NOTFOUND " device or file $3" || PERROR=9 #return $? -DEVICE=$3 - -#4 y 5 param check . solo si es sobre particiones. -if [ "$PARM" == "5" ] -then - # 4 param check - ogCheckStringInGroup "$4" "partclone partimage ntfsclone" || ogRaiseError $OG_ERR_NOTFOUND " herramienta $4 no soportada" || PERROR=10 #return $? - TOOL=$4 - ogCheckStringInGroup "$5" "lzop gzip 0 1" || ogRaiseError $OG_ERR_NOTFOUND " compresor $5 no valido" || PERROR=11 #return $? - LEVEL=$5 -fi - - -[ "$PERROR" -gt "0" ] && return 1 - -# Valores estandar no configurables. -CERROR="8x8/128" - -# opción del usuo de tuberia intermedia en memoria mbuffer. -which mbuffer > /dev/null && MBUFFER=" --pipe 'mbuffer -q -m 20M' " - -# Generamos la instrucción base de multicast -Envio,Recepcion- -SYNTAXSERVER="udp-sender $MBUFFER --nokbd --portbase $PORTBASE --$METHOD --mcast-data-address $ADDRESS --fec $CERROR --max-bitrate $BITRATE --ttl 16 --min-clients $NCLIENTS --max-wait $MAXTIME " -SYNTAXCLIENT="udp-receiver $MBUFFER --portbase $PORTBASE " - - -case "$1" in -SENDPARTITION) - PROG1=`ogCreateImageSyntax $DEVICE " " $TOOL $LEVEL | awk -F"|" '{print $1 "|" $3}' | tr -d ">"` - echo "$PROG1 | $SYNTAXSERVER" - ;; - RECEIVERPARTITION) - COMPRESSOR=`ogRestoreImageSyntax " " $DEVICE $TOOL $LEVEL | awk -F\| '{print $1}'` - TOOLS=`ogRestoreImageSyntax " " $DEVICE $TOOL $LEVEL | awk -F\| '{print $NF}'` - echo "$SYNTAXCLIENT | $COMPRESSOR | $TOOLS " - ;; - SENDFILE) - echo "$SYNTAXSERVER --file $3" - ;; - RECEIVERFILE) - echo "$SYNTAXCLIENT --file $3" - ;; - *) - ;; -esac -} - - - -#/** -# ogMcastSendFile [ str_repo | int_ndisk int_npart ] /Relative_path_file sessionMulticast -#@brief EnvÃa un fichero por multicast ORIGEN(fichero) DESTINO(sessionmulticast) -#@param (2 parámetros) $1 path_aboluto_fichero $2 sesionMcast -#@param (3 parámetros) $1 Contenedor REPO|CACHE $2 path_absoluto_fichero $3 sesionMulticast -#@param (4 parámetros) $1 disk $2 particion $3 path_absoluto_fichero $4 sesionMulticast -#@return -#@exception OG_ERR_FORMAT formato incorrecto. -#@note Requisitos: -#@version 0.91 - Definición de Protocol.lib -#@author Antonio Doblas Viso, Universidad de Málaga -#@date 2010/05/09 -#*/ ## -#/** -# - -function ogMcastSendFile () -{ -# Variables locales. -local ARGS SOURCE TARGET COMMAND DEVICE -#ARGS usado para controlar ubicación de la sesion multicast - -# Si se solicita, mostrar ayuda. -if [ "$*" == "help" ]; then - ogHelp "$FUNCNAME [str_REPOSITORY] [int_ndisk int_npart] /Relative_path_file sesionMcast" \ - "$FUNCNAME 1 1 /aula1/winxp.img sesionMcast" \ - "$FUNCNAME REPO /aula1/ubuntu.iso sesionMcast" \ - "$FUNCNAME CACHE /aula1/winxp.img sesionMcast" \ - "$FUNCNAME /opt/opengnsys/images/aula1/hd500.vmx sesionMcast" - return -fi - -ARGS="$@" -case "$1" in - /*) # Camino completo. */ (Comentrio Doxygen) - SOURCE=$(ogGetPath "$1") - ARG=2 - DEVICE="$1" - ;; - [1-9]*) # ndisco npartición. - SOURCE=$(ogGetPath "$1" "$2" "$3") - ARG=4 - DEVICE="$1 $2 $3" - ;; - *) # Otros: repo, cache, cdrom (no se permiten caminos relativos). - SOURCE=$(ogGetPath "$1" "$2") - ARG=3 - DEVICE="$1 $2 " - ;; -esac - - -# Error si no se reciben los argumentos ARG necesarios según la opcion. -[ $# == "$ARG" ] || ogRaiseError $OG_ERR_FORMAT || return $? - -# Comprobar fichero origen -ogGetPath $SOURCE &> /dev/null || ogRaiseError $OG_ERR_NOTFOUND " device or file $DEVICE not found" || return $? - -SESSION=${!ARG} -# llamando a la funcion con param1 session $SESSION y param2 $SOURCE -COMMAND=`ogMcastSyntax "SENDFILE" "$SESSION" "$SOURCE"` -echo $COMMAND -eval $COMMAND -} - - - -#/** -# ogMcastReceiverFile sesion Multicast [ str_repo | int_ndisk int_npart ] /Relative_path_file -#@brief Recibe un fichero multicast ORIGEN(sesionmulticast) DESTINO(fichero) -#@param (2 parámetros) $1 sesionMcastCLIENT $2 path_aboluto_fichero_destino -#@param (3 parámetros) $1 sesionMcastCLIENT $2 Contenedor REPO|CACHE $3 path_absoluto_fichero_destino -#@param (4 parámetros) $1 sesionMcastCLIENT $2 disk $3 particion $4 path_absoluto_fichero_destino -#@return -#@exception OG_ERR_FORMAT formato incorrecto. -#@note Requisitos: -#@version 0.91 - Definición de Protocol.lib -#@author Antonio Doblas Viso, Universidad de Málaga -#@date 2010/05/09 -#*/ ## -#/** -# - -ogMcastReceiverFile () -{ - -# Variables locales. -local ARGS ARG TARGETDIR TARGETFILE - - -# Si se solicita, mostrar ayuda. -if [ "$*" == "help" ]; then - ogHelp "$FUNCNAME" "$FUNCNAME [ str_portMcast] [ [Relative_path_file] | [str_REPOSITORY path_file] | [int_ndisk int_npart path_file ] ]" \ - "$FUNCNAME 9000 /PS1_PH1.img" \ - "$FUNCNAME 9000 CACHE /aula1/PS2_PH4.img" \ - "$FUNCNAME 9000 1 1 /isos/linux.iso" - return -fi - -ARGS="$@" -case "$2" in - /*) # Camino completo. */ (Comentrio Doxygen) - TARGETDIR=$(ogGetParentPath "$2") - ARG=2 - ;; - [1-9]*) # ndisco npartición. - TARGETDIR=$(ogGetParentPath "$2" "$3" "$4") - ARG=4 - ;; - *) # Otros: repo, cache, cdrom (no se permiten caminos relativos). - TARGETDIR=$(ogGetParentPath "$2" "$3") - ARG=3 - ;; -esac - -# Error si no se reciben los argumentos ARG necesarios según la opcion. -[ $# == "$ARG" ] || ogRaiseError $OG_ERR_FORMAT "Parametros no admitidos"|| return $? - -#obtenemos el nombre del fichero a descargar. -TARGETFILE=`basename ${!ARG}` - -#generamos la instrucción a ejecutar. -COMMAND=`ogMcastSyntax RECEIVERFILE "$1" $TARGETDIR/$TARGETFILE ` -echo $COMMAND -eval $COMMAND -} - -#/** -# ogMcastSendPartition -#@brief Función para enviar el contenido de una partición a multiples particiones remotas. -#@param -#@param -#@param -#@return -#@exception -#@note -#@todo: ogIsLocked siempre devuelve 1. crear ticket -#@version 0.1 - Integración para OpenGNSys. -#@author -#@date -#*/ ## - -ogMcastSendPartition () -{ - -# Variables locales -local PART COMMAND - -# Si se solicita, mostrar ayuda. -if [ "$*" == "help" ]; then - ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk int_npart SessionMulticastSERVER tools compresor" \ - "$FUNCNAME 1 1 9000:full-duplex:239.194.37.31:50M:20:2 partclone lzop" - return -fi -# Error si no se reciben 5 parámetros. -[ "$#" == 5 ] || ogRaiseError $OG_ERR_FORMAT || return $? -#chequeamos la particion. -PART=$(ogDiskToDev "$1" "$2") || return $? - -#ogIsLocked $1 $2 || ogRaiseError $OG_ERR_LOCKED "$1,$2" || return $? -ogUnmount $1 $2 - - -#generamos la instrucción a ejecutar. -COMMAND=`ogMcastSyntax SENDPARTITION "$3" $PART $4 $5` -echo $COMMAND -eval $COMMAND -} - -#/** -# ogMcastReceiverPartition -#@brief Función para recibir directamente en la partición el contenido de un fichero imagen remoto enviado por multicast. -#@param -#@param -#@param -#@return -#@exception -#@note -#@todo: -#@version 0.1 - Integración para OpenGNSys. -#@author -#@date -#*/ ## -ogMcastReceiverPartition () -{ -# Variables locales -local PART COMMAND - -# Si se solicita, mostrar ayuda. -if [ "$*" == "help" ]; then - ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk int_npart SessionMulticastCLIENT tools compresor" \ - "$FUNCNAME 1 1 9000 partclone lzop" - return -fi -# Error si no se reciben 5 parámetros. -[ "$#" == 5 ] || ogRaiseError $OG_ERR_FORMAT || return $? -#chequeamos la particion. -PART=$(ogDiskToDev "$1" "$2") || return $? - -#ogIsLocked $1 $2 || ogRaiseError $OG_ERR_LOCKED "$1,$2" || return $? -ogUnmount $1 $2 - -#generamos la instrucción a ejecutar. -COMMAND=`ogMcastSyntax RECEIVERPARTITION "$3" $PART $4 $5` -echo $COMMAND -eval $COMMAND -} - - -########################################## -############## funciones torrent -#/** -# ogTorrentStart [ str_repo | int_ndisk int_npart ] Relative_path_file.torrent | SessionProtocol -#@brief Función iniciar P2P - requiere un tracker para todos los modos, y un seeder para los modos peer y leecher y los ficheros .torrent. -#@param str_pathDirectory str_Relative_path_file -#@param int_disk int_partition str_Relative_path_file -#@param str_REPOSITORY(CACHE - LOCAL) str_Relative_path_file -#@param (2 parámetros) $1 path_aboluto_fichero_torrent $2 Parametros_Session_Torrent -#@param (3 parámetros) $1 Contenedor CACHE $2 path_absoluto_fichero_Torrent $3 Parametros_Session_Torrent -#@param (4 parámetros) $1 disk $2 particion $3 path_absoluto_fichero_Torrent 4$ Parametros_Session_Torrent - -#@return -#@note -#@todo: -#@version 0.1 - Integración para OpenGNSys. -#@author Antonio J. Doblas Viso. Universidad de Málaga -#@date -#@version 0.2 - Chequeo del tamaño de imagen descargado. -#@author Irina . Univesidad de Sevilla. -#@date -#@version 0.3 - Control de los modos de operación, y estado de descarga. -#@author Antonio J. Doblas Viso. Univesidad de Málaga. -#@date -#@version 0.4 - Enviadando señal (2) a ctorrent permiendo la comunicación final con tracker -#@author Antonio J. Doblas Viso. Univesidad de Málaga. -#@date -#*/ ## - -#protocoloTORRENT mode:time -#mode=seeder -> Dejar el equipo seedeando hasta que transcurra el tiempo indicado o un kill desde consola, -#mode=peer -> seedear mientras descarga -#mode=leecher -> NO seedear mientras descarga -#time tiempo que una vez descargada la imagen queremos dejar al cliente como seeder. - -ogTorrentStart () -{ - -# Variables locales. -local ARGS ARG TARGETDIR TARGETFILE SESSION ERROR -ERROR=0 - -# Si se solicita, mostrar ayuda. -if [ "$*" == "help" ]; then - ogHelp "$FUNCNAME $FUNCNAME [ str_repo] [ [Relative_path_fileTORRENT] | [str_REPOSITORY path_fileTORRENT] | [int_ndisk int_npart path_fileTORRENT ] ] SessionTorrent" \ - "$FUNCNAME CACHE /PS1_PH1.img.torrent seeder:10000" \ - "$FUNCNAME /opt/opengnsys/cache/linux.iso peer:60" \ - "$FUNCNAME 1 1 /linux.iso.torrent leecher:60" - return -fi - -case "$1" in - /*) # Camino completo. */ (Comentrio Doxygen) - SOURCE=$(ogGetPath "$1") - ARG=2 - ;; - [1-9]*) # ndisco npartición. - SOURCE=$(ogGetPath "$1" "$2" "$3") - ARG=4 - ;; - *) # Otros: Solo cache (no se permiten caminos relativos). - SOURCE=$(ogGetPath "$1" "$2" 2>/dev/null) - ARG=3 - ;; -esac - -# Error si no se reciben los argumentos ARG necesarios según la opcion. -[ $# == "$ARG" ] || ogRaiseError $OG_ERR_FORMAT "Parametros no admitidos"|| return $? - -#controlar source, que no se haga al repo. -if [ $ARG == "3" ] -then - ogCheckStringInGroup "$1" "CACHE cache" || ogRaiseError $OG_ERR_FORMAT "La descarga torrent solo se hace desde local, copia el torrent a la cache y realiza la operación desde esa ubicación" || return $? -fi -if [ $ARG == "2" ] -then - if `ogCheckStringInReg "$1" "^/opt/opengnsys/images"` - then - ogRaiseError $OG_ERR_FORMAT "La descarga torrent solo se hace desde local, copia el torrent a la cache y realiza la operación desde esa ubicación" - return $? - fi -fi - -#controlar el source, para que sea un torrent. -ctorrent -x ${SOURCE} &> /dev/null; [ $? -eq 0 ] || ogRaiseError $OG_ERR_NOTFOUND "${ARGS% $*}" || return $? - -TARGET=`echo $SOURCE | awk -F.torrent '{print $1}'` -DIRSOURCE=`ogGetParentPath $SOURCE` -cd $DIRSOURCE - - - -SESSION=${!ARG} -OIFS=$IFS; IFS=':' ; SESSION=($SESSION); IFS=$OIFS -[[ ${#SESSION[*]} == 2 ]] || ogRaiseError $OG_ERR_FORMAT "parametros session Torrent no completa: modo:tiempo" || ERROR=1# return $? -#controlamos el modo de operación del cliente- -ogCheckStringInGroup ${SESSION[0]} "seeder SEEDER peer PEER leecher LEECHER" || ogRaiseError $OG_ERR_FORMAT "valor modo Torrent no valido ${SESSION[0]}" || ERROR=1 #return $? -MODE=${SESSION[0]} -#contolamos el tiempo para el seeder o una vez descargada la imagen como peer o leecher. -ogCheckStringInReg ${SESSION[1]} "^[0-9]{1,10}$" || ogRaiseError $OG_ERR_FORMAT "valor tiempo no valido ${SESSION[1]}" || ERROR=1 # return $? -TIME=${SESSION[1]} -# si ha habido error en el control de parametros error. -[ "$ERROR" == "1" ] && return 1 - - -#SYNTAXSEEDER="echo MODE seeder ctorrent ; (sleep \$TIME && kill -9 \`pidof ctorrent\`) & ; ctorrent \${SOURCE}" - -# si No fichero .bf, y Si fichero destino imagen ya descargada y su chequeo fue comprobado en su descarga inicial. -if [ ! -f ${SOURCE}.bf -a -f ${TARGET} ] -then - echo "imagen ya descargada" - case "$MODE" in - seeder|SEEDER) - echo "MODE seeder ctorrent" #### ${SOURCE} -X 'sleep $TIME; kill -9 \$(pidof ctorrent)' -C 100" - (sleep $TIME && kill -2 `pidof ctorrent`) & - ctorrent -f ${SOURCE} - esac - return 0 -fi - -#Si no existe bf ni fichero destino descarga inicial. -if [ ! -f ${SOURCE}.bf -a ! -f ${TARGET} ] -then - OPTION=DOWNLOAD - echo "descarga inicial" -fi - -# Si fichero bf descarga anterior no completada -. -if [ -f ${SOURCE}.bf -a -f ${TARGET} ] -then - echo Continuar con Descargar inicial no terminada. - OPTION=DOWNLOAD -fi - -if [ "$OPTION" == "DOWNLOAD" ] -then - case "$MODE" in - peer|PEER) - echo "Donwloading Torrent as peer" ### echo "ctorrent -X 'sleep $TIME; kill -9 \$(pidof ctorrent)' -C 100 $SOURCE -s $TARGET -b ${SOURCE}.bf" - ctorrent -f -X "sleep $TIME; kill -2 \$(pidof ctorrent)" -C 100 ${SOURCE} -s ${TARGET} -b ${SOURCE}.bf - ;; - leecher|LEECHER) - echo "Donwloading Torrent as leecher" # echo "ctorrent ${SOURCE} -X 'sleep $TIME; kill -9 \$(pidof ctorrent)' -C 100 -U 0" - ctorrent ${SOURCE} -X "sleep $TIME; kill -2 \$(pidof ctorrent)" -C 100 -U 0 - ;; - seeder|SEEDER) - echo "MODE seeder ctorrent" #### ${SOURCE} -X 'sleep $TIME; kill -9 \$(pidof ctorrent)' -C 100" - ctorrent -f -X "sleep $TIME; kill -2 \$(pidof ctorrent)" -C 100 ${SOURCE} -s ${TARGET} -b ${SOURCE}.bf - ;; - esac -fi -cd /tmp -} - -#/** -# ogCreateTorrent [ str_repo | int_ndisk int_npart ] Relative_path_file -#@brief Función para crear el fichero torrent. -#@param str_pathDirectory str_Relative_path_file -#@param int_disk int_partition str_Relative_path_file -#@param str_REPOSITORY(CACHE - LOCAL) str_Relative_path_file -#@return -#@exception OG_ERR_FORMAT Formato incorrecto. -#@exception OG_ERR_NOTFOUND Disco o particion no corresponden con un dispositivo. -#@exception OG_ERR_PARTITION Tipo de partición desconocido o no se puede montar. -#@exception OG_ERR_NOTOS La partición no tiene instalado un sistema operativo. -#@note -#@version 0.1 - Integración para OpenGNSys. -#@author Antonio J. Doblas Viso. Universidad de Málaga -#@date -#@version 0.2 - Integración para btlaunch. -#@author Irina . Univesidad de Sevilla. -#@date -#*/ ## - -ogCreateTorrent () -{ -# Variables locales. -local ARGS ARG SOURCE EXT IPTORRENT - - -# Si se solicita, mostrar ayuda. -if [ "$*" == "help" ]; then - ogHelp "$FUNCNAME" "$FUNCNAME [str_REPOSITORY] [int_ndisk int_npart] Relative_path_file IpBttrack" \ "$FUNCNAME 1 1 /aula1/winxp 10.1.15.23" \ - "$FUNCNAME REPO /aula1/winxp 10.1.15.45" - - return -fi - -# Error si se quiere crear el fichero en cache y no existe -[ "$1" != "CACHE" ] || `ogFindCache >/dev/null` || ogRaiseError $OG_ERR_NOTFOUND "CACHE"|| return $? - -case "$1" in - /*) # Camino completo. */ (Comentrio Doxygen) - SOURCE=$(ogGetPath "$1.img") - ARG=2 - ;; - [1-9]*) # ndisco npartición. - SOURCE=$(ogGetPath "$1" "$2" "$3.img") - ARG=4 - ;; - *) # Otros: repo, cache, cdrom (no se permiten caminos relativos). - EXT=$(ogGetImageType "$1" "$2") - SOURCE=$(ogGetPath "$1" "$2.$EXT") - ARG=3 - ;; -esac - -# Error si no se reciben los argumentos ARG necesarios según la opcion. -[ $# -eq "$ARG" ] || ogRaiseError $OG_ERR_FORMAT || return $? - - -# Error si no existe la imagen -[ $SOURCE ] || ogRaiseError $OG_ERR_NOTFOUND || return $? - -[ -r $SOURCE.torrent ] && mv "$SOURCE.torrent" "$SOURCE.torrent.ant" && echo "Esperamos que se refresque el servidor" && sleep 20 - -IPTORRENT="${!#}" -# Si ponemos el path completo cuando creamos el fichero torrent da error -cd `dirname $SOURCE` -echo ctorrent -t `basename $SOURCE` -u http://$IPTORRENT:6969/announce -s $SOURCE.torrent -ctorrent -t `basename $SOURCE` -u http://$IPTORRENT:6969/announce -s $SOURCE.torrent - -} - -#/** -# ogUpdateCacheIsNecesary [ str_repo ] Relative_path_file_OGIMG_with_/ -#@brief Comprueba que el fichero que se desea almacenar en la cache del cliente, no esta. -#@param 1 str_REPO -#@param 2 str_Relative_path_file_OGIMG_with_/ -#@return 0 si es necesario actualizar el fichero. -#@return 1 si la imagen ya esta en la cache, por lo tanto no es necesario actualizar el fichero -#@note -#@todo: Proceso en el caso de que el fichero tenga el mismo nombre, pero su contenido sea distinto. -#@todo: Se dejan mensajes mientras se confirma su funcionamiento. -#@version 0.1 - Integracion para OpenGNSys. -#@author Antonio J. Doblas Viso. Universidad de Malaga -#@date -#*/ ## -function ogUpdateCacheIsNecesary () -{ - -# Variables locales. -local ERROR SOURCE CACHE FILESOURCE MD5SOURCE FILETARGET MD5TARGET -ERROR=0 - -# Si se solicita, mostrar ayuda. -if [ "$*" == "help" ]; then - ogHelp "$FUNCNAME $FUNCNAME [ str_repo] [ [Relative_path_image] " \ - "$FUNCNAME REPO /PS1_PH1.img" \ - "$FUNCNAME REPO /ogclient.sqfs" - - return -fi - -# Error si no se reciben los argumentos ARG necesarios según la opcion. -[ $# == "2" ] || ogRaiseError $OG_ERR_FORMAT "Parametros no admitidos"|| return $? - - -ogCheckStringInGroup "$1" "REPO repo" || ogRaiseError $OG_ERR_FORMAT "El contendor $1 no es valido, solo se admite REPO" || return $? - -FILESOURCE=`ogGetPath $1 $2` -FILETARGET=`ogGetPath CACHE $2` - -echo "paso 1. si no existe la imagen, confirmamos que es necesaria la actualizacion de la cache." -if [ -z $FILETARGET ] -then - # borramos el fichero bf del torrent, en el caso de que se hubiese quedado de algun proceso fallido - ogDeleteFile CACHE /$2.torrent.bf &> /dev/null - ogDeleteFile CACHE /$2.sum &> /dev/null - echo "Salida con valor 0, paso 1, la cache no contiene esa imagen " - return 0 -fi -echo "Paso 2. Comprobamos que la imagen no estuviese en un proceso previo torrent" -if ogGetPath $FILETARGET.torrent.bf > /dev/null -then - echo "Salida con valor 0, paso 2 la imagen esta en un estado de descarga torrent interrumpido." - #TODO: comprobar los md5 para asegurarnos que la imagen es la misma. - return 0 -fi - -## En este punto la imagen en el repo y en la cache se llaman igual, -echo "paso 4. recuperamos o calculamos los md5 de los ficheros" -if [ -f $FILESOURCE.sum ] -then - echo "leyendo el sum del fichero sum del repo" - MD5SOURCE=$(cat $FILESOURCE.sum) -#elif [ -f $FILETARGET.torrent ] -#then -# echo "leyendo el sum del fichero torrent de la cache" -# MD5SOURCE=$(ctorrent -x $FILETARGET.torrent | grep Comment | awk -F": " '{print $2}') -else - echo "calculando el sun del repo" - MD5SOURCE=$(md5sum $FILESOURCE | cut -f1 -d" ") -fi -if [ -f $FILETARGET.sum ] -then - echo "leyendo el sum de la cache" - MD5TARGET=$(cat $FILETARGET.sum) -else - echo "calculando el sum de la cache" - md5sum $FILETARGET | cut -f1 -d" " > $FILETARGET.sum - MD5TARGET=$(cat $FILETARGET.sum) -fi - -echo "Paso 5. comparamos los md5" -#TODO: que hacer cuando los md5 son distintos. Por defecto borrar. -if [ "$MD5SOURCE" == "$MD5TARGET" ] -then - echo "paso5.A la imagen esta en cache" - return 1 -else - echo "paso 5.b la imagen en cache es distinta, borramos la imagen anterior y devolvemos 0 para confirmar la actualizacion" - rm $FILETARGET - return 0 -fi - -} - - diff --git a/client/engine/System.lib b/client/engine/System.lib index 7dbe6422..9973b596 100755 --- a/client/engine/System.lib +++ b/client/engine/System.lib @@ -74,24 +74,7 @@ case "$CODE" in $OG_ERR_IMAGE) MSG="$MSG_ERR_IMAGE \"$2\"" ;; $OG_ERR_NOTOS) MSG="$MSG_ERR_NOTOS \"$2\"" ;; $OG_ERR_NOTEXEC) MSG="$MSG_ERR_NOTEXEC \"$2\"" ;; - $OG_ERR_NOTWRITE) MSG="$MSG_ERR_NOTWRITE \"$2\"" ;; - $OG_ERR_NOTCACHE) MSG="$MSG_ERR_NOTCACHE \"$2\"" ;; - $OG_ERR_CACHESIZE) MSG="$MSG_ERR_CACHESIZE \"$2\"" ;; - $OG_ERR_REDUCEFS) MSG="$MSG_ERR_REDUCEFS \"$2\"" ;; - $OG_ERR_EXTENDFS) MSG="$MSG_ERR_EXTENDFS \"$2\"" ;; - $OG_ERR_IMGSIZEPARTITION) MSG="$MSG_ERR_IMGSIZEPARTITION \"$2\"" ;; - $OG_ERR_UCASTSYNTAXT) MSG="$MSG_ERR_UCASTSYNTAXT \"$2\"" ;; - $OG_ERR_UCASTSENDPARTITION) MSG="$MSG_ERR_UCASTSENDPARTITION \"$2\"" ;; - $OG_ERR_UCASTSENDFILE) MSG="$MSG_ERR_UCASTSENDFILE \"$2\"" ;; - $OG_ERR_UCASTRECEIVERPARTITION) MSG="$MSG_ERR_UCASTRECEIVERPARTITION \"$2\"" ;; - $OG_ERR_UCASTRECEIVERFILE) MSG="$MSG_ERR_UCASTRECEIVERFILE \"$2\"" ;; - $OG_ERR_MCASTSYNTAXT) MSG="$MSG_ERR_MCASTSYNTAXT \"$2\"" ;; - $OG_ERR_MCASTSENDFILE) MSG="$MSG_ERR_MCASTSENDFILE \"$2\"" ;; - $OG_ERR_MCASTRECEIVERFILE) MSG="$MSG_ERR_MCASTRECEIVERFILE \"$2\"" ;; - $OG_ERR_MCASTSENDPARTITION) MSG="$MSG_ERR_MCASTSENDPARTITION \"$2\"" ;; - $OG_ERR_MCASTRECEIVERPARTITION) MSG="$MSG_ERR_MCASTRECEIVERPARTITION \"$2\"" ;; - $OG_ERR_PROTOCOLJOINMASTER) MSG="$MSG_ERR_PROTOCOLJOINMASTER \"$2\"" ;; - *) MSG="$MSG_ERR_GENERIC"; CODE=$OG_ERR_GENERIC ;; + *) MSG="$MSG_ERR_GENERIC"; CODE=$OG_ERR_GENERIC ;; esac # Mostrar mensaje de error y salir con el código indicado. diff --git a/client/shared/etc/init/defaultTESTING.sh b/client/shared/etc/init/defaultTESTING.sh deleted file mode 100755 index 7a258588..00000000 --- a/client/shared/etc/init/defaultTESTING.sh +++ /dev/null @@ -1,49 +0,0 @@ -#!/bin/bash - -/etc/init.d/ssh restart -#setterm -blank 0 -powersave off -powerdown 0 < /dev/console > /dev/console 2>&1 - -ethtool -s eth0 wol g - - -# Fichero de registro de incidencias (en el servidor; si no, en local). -OPENGNSYS=${OPENGNSYS:-/opt/opengnsys} -OGLOGFILE=${OGLOGFILE:-$OPENGNSYS/log/${ogGetIpAdderss},log} -if ! touch $OGLOGFILE 2>/dev/null; then - OGLOGFILE=/var/log/opengnsys.log -fi - -echo -ne "og\nog\n" | passwd root - -#TODO => activacion de modo escritura en REPO - -if [ $ogactiveadmin == "true" ] -then - export boot=admin - umount /opt/opengnsys/images - - if [ "$ogprotocol" == "nfs" ] - then - mount.nfs ${ROOTSERVER}:/opt/opengnsys/images /opt/opengnsys/images -o nolock - fi - - if [ "$ogprotocol" == "smb" ] - then - echo "montando smb" - mount.cifs //${ROOTSERVER}/ogimages /opt/opengnsys/images -o user=opengnsys,pass=og - echo mount.cifs //${ROOTSERVER}/ogimages /opt/opengnsys/images -o user=opengnsys,pass=og - - fi -fi -# Arranque de OpenGnSys Client. -if [ -x "$OPENGNSYS/bin/ogAdmClient" ]; then - - - echo "$MSG_LAUNCHCLIENT modo cliente full" - $OPENGNSYS/bin/ogAdmClient -f $OPENGNSYS/etc/ogAdmClient.cfg -l $OGLOGFILE -d 5 -fi - -# Si fallo en cliente y modo "admin", cargar shell; si no, salir. -#if [ "$boot" == "admin" ]; then - bash -#fi diff --git a/client/shared/etc/preinit/loadudeb.sh.NoUsed b/client/shared/etc/preinit/loadudeb.sh.NoUsed deleted file mode 100755 index 662887c0..00000000 --- a/client/shared/etc/preinit/loadudeb.sh.NoUsed +++ /dev/null @@ -1,27 +0,0 @@ -#!/bin/bash -#/** -#@file loadudeb.sh -#@brief Script de inicio para cargar paquetes udeb en el cliente. -#@note Desglose del script "loadenviron.sh". -#@warning License: GNU GPLv3+ -#@version 0.9 -#@author Ramon Gomez, ETSII Universidad de Sevilla -#@date 2009-10-10 -#*/ - - -# Si está configurado OpenGNSys ... -if [ -n "$OPENGNSYS" ]; then - # Cargar paquetes udeb. - echo "$MSG_LOADUDEBS" - for i in $OGLIB/udeb/*.udeb; do - udpkg -i "$i" >/dev/null || printf "$MSG_ERRLOADUDEB\n" $(basename $i) - done - # TEMPORAL: corregir biblioteca dinámica para "partprobe". - ln -s $(find /lib -type f -name "libparted*.so.*") /lib/$(grep libparted $OGBIN/$(ogGetArch)/partprobe) 2>/dev/null -else - # FIXME Error: entorno de OpenGnSys no configurado. - echo "Error: OpenGnSys environment is not configured." # FIXME: definir mensaje. - exit 1 -fi - diff --git a/client/shared/etc/preinit/metadevs.sh.NoUsed b/client/shared/etc/preinit/metadevs.sh.NoUsed deleted file mode 100755 index 0870e552..00000000 --- a/client/shared/etc/preinit/metadevs.sh.NoUsed +++ /dev/null @@ -1,28 +0,0 @@ -#!/bin/bash -#/** -#@file metadevs.sh -#@brief Script de inicio para detectar metadispositivos LVM y RAID. -#@note Desglose del script "loadenviron.sh". -#@warning License: GNU GPLv3+ -#@version 0.9 -#@author Ramon Gomez, ETSII Universidad de Sevilla -#@date 2009-10-10 -#@version 0.9.4 -#@author Ramon Gomez, ETSII Universidad de Sevilla -#@date 2010-04-19 -#*/ - - -# Si está configurado OpenGNSys ... -if [ -n "$OPENGNSYS" ]; then - echo "$MSG_DETECTLVMRAID" - # Detectar metadispositivos LVM. - vgchange -ay >/dev/null 2>&1 - # Detectar metadispositivos RAID. - dmraid -ay >/dev/null 2>&1 -else - # FIXME Error: entorno de OpenGNSys no configurado. - echo "Error: OpenGNSys environment is not configured." # FIXME: definir mensaje. - exit 1 -fi - diff --git a/client/shared/scripts/createImage b/client/shared/scripts/createImage index c0b2a036..8e98113a 100755 --- a/client/shared/scripts/createImage +++ b/client/shared/scripts/createImage @@ -1,26 +1,6 @@ #!/bin/bash - -#/** -# createImage -#@brief Scirpt de ejemplo para crear una imagen de un sistema de archivos. -#@brief (puede usarse como base para el programa de creación de imágenes usado por OpenGnSys Admin). -#@param 1 disco -#@param 2 particion -#@param 3 REPO|CACHE -#@param 4 imagen -#@return -#@exception OG_ERR_FORMAT formato incorrecto. -#@exception OG_ERR_NOTCACHE #si cache no existe. -#@exception OG_ERR_REDUCEFS #error al reducir sistema de archivos. -#@exception OG_ERR_EXTENDFS #errror al expandir el sistema de archivos. -#@note -#@todo: -#@version 1.0 - control de errores para el ogAdmServer -#@author -#@date -#*/ ## - - +# createImage - Scirpt de ejemplo para crear una imagen de un sistema de archivos. +# (puede usarse como base para el programa de creación de imágenes usado por OpenGnSys Admin). TIME1=$SECONDS PROG="$(basename $0)" @@ -37,7 +17,7 @@ IMGEXT="img" # Si el repositorio es CACHE comprobamos que exista if [ "$3" == "CACHE" -o "$3" == "cache" ]; then if ! $(ogFindCache >/dev/null); then - ogRaiseError $OG_ERR_NOTCACHE "$MSG_ERR_NOTCACHE" + ogRaiseError $OG_ERR_NOTFOUND "CACHE" exit $? fi fi @@ -67,7 +47,7 @@ ogUnmount $1 $2 ogCheckFs $1 $2 echo "[30]: Reducir sistema de archivos." -ogReduceFs $1 $2 || $(ogRaiseError $OG_ERR_REDUCEFS "$1 $2"; exit $?) +ogReduceFs $1 $2 || exit 1 # Crear la imagen. echo "[40] Crear imagen." @@ -75,8 +55,7 @@ ogCreateImage $1 "$2" $3 $4 "$IMGPROG" "$IMGCOMP" || exit $? #ogCreateImage $1 "$2" $3 $4 || exit $? echo "[90] Extender sistema de archivos." -ogExtendFs $1 $2 || $(ogRaiseError $OG_ERR_EXTENDFS "$1 $2"; exit $?) - +ogExtendFs $1 $2 TIME=$[SECONDS-TIME1] echo "[100] Duracion de la operacion $[TIME/60]m $[TIME%60]s" diff --git a/server/bin/setclientmode b/server/bin/setclientmode deleted file mode 100755 index 0cc57002..00000000 --- a/server/bin/setclientmode +++ /dev/null @@ -1,68 +0,0 @@ -#!/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/pxelinux.cfg -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 $PXEDIR/"$1" ]; then - echo "No existe archivo platilla: $PXEDIR/$1" - 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 - -# Creamos los enlaces -# PXE no permite enlaces simbolicos y las letras han de ir en minuscula -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=$(echo $AUX | awk '{print tolower($0)}') - 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 - ln $PXEDIR/"$1" $PXEDIR/$AUX - fi - let NPC=NPC+1 -done -date +"%b %d %T $PROG: $NPC equipo(s) configurado(s)" | tee -a $LOGFILE - |