diff options
author | ramon <ramongomez@us.es> | 2009-12-14 18:39:39 +0000 |
---|---|---|
committer | ramon <ramongomez@us.es> | 2009-12-14 18:39:39 +0000 |
commit | 42669ebf8e58127fe4df12120d3a69fbb1a61314 (patch) | |
tree | 60388731c6c7aff5cc65cc02dbd4aefb17746f16 /client | |
parent | c8f8a9cb5d14083e9486914ff5b8f4b4adf95aae (diff) |
Funciones adaptadas a plantilla Doxygen; nueva función ogFsToId.
git-svn-id: https://opengnsys.es/svn/trunk@660 a21b9725-9963-47de-94b9-378ad31fedc9
Diffstat (limited to 'client')
-rwxr-xr-x | client/engine/Boot.lib | 86 | ||||
-rwxr-xr-x | client/engine/Disk.lib | 246 | ||||
-rwxr-xr-x | client/engine/File.lib | 43 | ||||
-rwxr-xr-x | client/engine/FileSystem.lib | 128 | ||||
-rwxr-xr-x | client/engine/Image.lib | 61 | ||||
-rwxr-xr-x | client/engine/Inventory.lib | 55 | ||||
-rwxr-xr-x | client/engine/System.lib | 49 |
7 files changed, 348 insertions, 320 deletions
diff --git a/client/engine/Boot.lib b/client/engine/Boot.lib index 1a831b0d..ddd5240b 100755 --- a/client/engine/Boot.lib +++ b/client/engine/Boot.lib @@ -12,8 +12,8 @@ #/** # ogBoot int_ndisk int_npartition #@brief Inicia el proceso de arranque de un sistema de archivos. -#@arg \c int_ndisk nº de orden del disco -#@arg \c int_npartition nº de orden de la partición +#@param int_ndisk nº de orden del disco +#@param int_npartition nº de orden de la partición #@return (activar el sistema de archivos). #@exception OG_ERR_FORMAT Formato incorrecto. #@exception OG_ERR_NOTFOUND Disco o particion no corresponden con un dispositivo. @@ -24,8 +24,8 @@ #@author Ramon Gomez, ETSII Universidad de Sevilla #@date 2009-09-11 #*/ ## -function ogBoot () { - +function ogBoot () +{ # Variables locales. local PART TYPE MNTDIR PARAMS KERNEL INITRD APPEND FILE LOADER @@ -82,9 +82,9 @@ kexec -e #/** # ogGetRegistryValue path_mountpoint str_registrytype str_valuename #@brief Devuelve el dato de un valor del registro de Windows. -#@arg \c path_mountpoint directorio donde está montado el sistema Windows -#@arg \c str_registrytype tipo de registro a leer -#@arg \c str_valuename valor de registro +#@param path_mountpoint directorio donde está montado el sistema Windows +#@param str_registrytype tipo de registro a leer +#@param str_valuename valor de registro #@return str_valuedata - valor de la clave. #@exception OG_ERR_FORMAT Formato incorrecto. #@exception OG_ERR_NOTFOUND Disco o partición no corresponden con un dispositivo. @@ -96,8 +96,8 @@ kexec -e #@author Ramon Gomez, ETSII Universidad de Sevilla #@date 2009-09-11 #*/ ## -function ogGetRegistryValue () { - +function ogGetRegistryValue () +{ # Variables locales. local FILE FILENT FILEXP @@ -123,15 +123,15 @@ cd ${3%\\*} cat ${3##*\\} q FIN -# */ +# (comentario Doxygen) */ } #/** # ogGetWindowsName int_ndisk int_npartition #@brief Muestra el nombre del equipo en el registro de Windows. -#@arg \c int_ndisk nº de orden del disco -#@arg \c int_npartition nº de orden de la partición +#@param int_ndisk nº de orden del disco +#@param int_npartition nº de orden de la partición #@return str_name - nombre del equipo #@exception OG_ERR_FORMAT Formato incorrecto. #@exception OG_ERR_NOTFOUND Disco o particion no corresponden con un dispositivo. @@ -140,8 +140,8 @@ FIN #@author Ramon Gomez, ETSII Universidad de Sevilla #@date 2009-09-23 #*/ ## -function ogGetWindowsName () { - +function ogGetWindowsName () +{ # Variables locales. local PART MNTDIR @@ -165,12 +165,11 @@ ogGetRegistryValue $MNTDIR system '\ControlSet001\Control\ComputerName\ComputerN #/** # ogListRegistryKeys path_mountpoint str_registrytype str_key -#@fn ogListRegistryKeys #@brief Lista los nombres de claves de una determinada clave del registro de Windows. -#@arg \c path_mountpoint directorio donde está montado el sistema Windows -#@arg \c str_registrytype tipo de registro a leer -#@arg \c str_key clave de registro -#@return str_claves ... - lista de claves de registro +#@param path_mountpoint directorio donde está montado el sistema Windows +#@param str_registrytype tipo de registro a leer +#@param str_key clave de registro +#@return str_key ... - lista de claves de registro #@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. @@ -181,8 +180,8 @@ ogGetRegistryValue $MNTDIR system '\ControlSet001\Control\ComputerName\ComputerN #@author Ramon Gomez, ETSII Universidad de Sevilla #@date 2009-09-23 #*/ ## -function ogListRegistryKeys () { - +function ogListRegistryKeys () +{ # Variables locales. local FILE FILENT FILEXP @@ -212,9 +211,9 @@ FIN #/** # ogLinuxBootParameters int_ndisk int_npartition #@brief Muestra los parámetros de arranque de un sistema de archivos Linux. -#@arg \c int_ndisk nº de orden del disco -#@arg \c int_npartition nº de orden de la partición -#@return kernel initrd parámetros ... +#@param int_ndisk nº de orden del disco +#@param int_npartition nº de orden de la partición +#@return str_kernel str_initrd str_parameters ... #@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. @@ -223,8 +222,8 @@ FIN #@author Ramon Gomez, ETSII Universidad de Sevilla #@date 2009-09-11 #*/ ## -function ogLinuxBootParameters () { - +function ogLinuxBootParameters () +{ # Variables locales. local MNTDIR CONF @@ -270,10 +269,10 @@ awk 'BEGIN {cont=-1;} #/** # ogSetRegistryValue path_mountpoint str_registrytype str_valuename str_valuedata #@brief Establece el dato asociado a un valor del registro de Windows. -#@arg \c path_mountpoint directorio donde está montado el sistema Windows -#@arg \c str_registrytype tipo de registro -#@arg \c str_valuename nombre del valor de registro -#@arg \c str_valuedata dato del valor de registro +#@param path_mountpoint directorio donde está montado el sistema Windows +#@param str_registrytype tipo de registro +#@param str_valuename nombre del valor de registro +#@param str_valuedata dato del valor de registro #@return (nada) #@exception OG_ERR_FORMAT Formato incorrecto. #@exception OG_ERR_NOTFOUND Disco o partición no corresponden con un dispositivo. @@ -285,27 +284,27 @@ awk 'BEGIN {cont=-1;} #@author Ramon Gomez, ETSII Universidad de Sevilla #@date 2009-09-24 #*/ ## -function ogSetRegistryValue () { - +function ogSetRegistryValue () +{ # Variables locales. local FILE FILENT FILEXP -#/// Si se solicita, mostrar ayuda. +# Si se solicita, mostrar ayuda. if [ "$*" == "help" ]; then ogHelp "$FUNCNAME" "$FUNCNAME path_mountpoint str_registrytype str_key" return fi -#/// Error si no se reciben 4 parámetros. +# Error si no se reciben 4 parámetros. [ $# == 4 ] || ogRaiseError $OG_ERR_FORMAT || return $? -#/// Camino del fichero de registro en NT/2000 o XP/Vista/7. +# Camino del fichero de registro en NT/2000 o XP/Vista/7. FILENT=$(ogGetPath "/$1/winnt/system32/config/$2") [ -f $FILENT ] && FILE="$FILENT" FILEXP=$(ogGetPath "/$1/windows/system32/config/$2") [ -f $FLEHXP ] && FILE="$FILEXP" [ ! -f $FILE ] && ogRaiseError OG_ERR_NOTFOUND "$1,$2" && return $? -#/// Cambiar el dato del valor de registro. +# Cambiar el dato del valor de registro. chntpw $FILE << FIN &>/dev/null ed $3 $4 @@ -318,9 +317,9 @@ FIN #/** # ogSetWindowsName int_ndisk int_npartition str_name #@brief Establece el nombre del equipo en el registro de Windows. -#@arg \c int_ndisk nº de orden del disco -#@arg \c int_npartition nº de orden de la partición -#@arg \c str_name nombre asignado +#@param int_ndisk nº de orden del disco +#@param int_npartition nº de orden de la partición +#@param str_name nombre asignado #@return (nada) #@exception OG_ERR_FORMAT Formato incorrecto. #@exception OG_ERR_NOTFOUND Disco o particion no corresponden con un dispositivo. @@ -329,8 +328,8 @@ FIN #@author Ramon Gomez, ETSII Universidad de Sevilla #@date 2009-09-24 #*/ ## -function ogSetWindowsName () { - +function ogSetWindowsName () +{ # Variables locales. local PART MNTDIR NAME @@ -343,7 +342,7 @@ fi # Error si no se reciben 3 parámetros. [ $# == 3 ] || ogRaiseError $OG_ERR_FORMAT || return $? -#/// Montar el sistema de archivos. +# Montar el sistema de archivos. MNTDIR=$(ogMount $1 $2) 2>/dev/null [ -z "$MNTDIR" ] && ogRaiseError OG_ERR_PARTITION "$1, $2" && return $? NAME="$3" @@ -359,7 +358,7 @@ ogSetRegistryValue $MNTDIR system '\ControlSet001\Services\Tcpip\Parameters\NV H #/** # ogNewMbrXP int_ndisk #@brief Genera un nuevo Master Boot Record en el disco duro indicado, compatible con los SO tipo Windows -#@arg \c int_ndisk nº de orden del disco +#@param int_ndisk nº de orden del disco #@return salida del programa my-sys #@exception OG_ERR_FORMAT Formato incorrecto. #@exception OG_ERR_NOTFOUND Disco o particion no corresponden con un dispositivo. @@ -386,3 +385,4 @@ PART="$(ogDiskToDev $1)" || return $? ms-sys -z -f $PART ms-sys -m -f $PART } + diff --git a/client/engine/Disk.lib b/client/engine/Disk.lib index fb40d7ec..73b19972 100755 --- a/client/engine/Disk.lib +++ b/client/engine/Disk.lib @@ -10,11 +10,11 @@ #/** -# ogCreatePartitions ndisk parttype:partsize ... +# ogCreatePartitions int_ndisk str_parttype:int_partsize ... #@brief Define el conjunto de particiones de un disco. -#@arg \c int_ndisk nº de orden del disco -#@arg \c str_parttype mnemónico del tipo de partición -#@arg \c int_partsize tamaño de la partición (en KB) +#@param int_ndisk nº de orden del disco +#@param str_parttype mnemónico del tipo de partición +#@param int_partsize tamaño de la partición (en KB) #@return (nada, por determinar) #@exception OG_ERR_FORMAT formato incorrecto. #@exception OG_ERR_NOTFOUND disco o particion no detectado (no es un dispositivo). @@ -26,8 +26,8 @@ #@author Ramon Gomez, ETSII Universidad de Sevilla #@date 2009/09/09 #*/ ## -function ogCreatePartitions () { - +function ogCreatePartitions () +{ # Variables locales. local DISK PART SECTORS START SIZE TYPE EXTSTART EXTSIZE tmpsfdisk # Si se solicita, mostrar ayuda. @@ -57,41 +57,24 @@ trap "rm -f $tmpsfdisk" 1 2 3 9 15 echo "unit: sectors" >$tmpsfdisk echo >>$tmpsfdisk -#/// Generar fichero de entrada para "sfdisk" con las particiones. +# Generar fichero de entrada para "sfdisk" con las particiones. while [ $# -gt 0 ]; do - #/// Leer formato de cada parámetro - Tipo:Tamaño + # Leer formato de cada parámetro - Tipo:Tamaño TYPE="${1%%:*}" SIZE="${1#*:}" [ -z "$SIZE" ] && ogRaiseError $OG_ERR_FORMAT && return $? - #/// Convertir en sectores de 512 B. + # Convertir en sectores de 512 B. SIZE=$[SIZE*2] [ $SIZE -eq 0 ] && ogRaiseError $OG_ERR_FORMAT && return $? - #/// Obtener identificador de tipo de partición. - case "$TYPE" in - EMPTY) ID=0 ;; - EXTENDED) ID=5 - [ $PART -gt 4 ] && ogRaiseError $OG_ERR_FORMAT && return $? - EXTSTART=$START - EXTSIZE=$SIZE - ;; - EXT[234]|REISERFS|REISER4|XFS|JFS) - ID=83 ;; - LINUX-SWAP) ID=82 ;; - LINUX-LVM) ID=8e ;; - LINUX-RAID) ID=fd ;; - SOLARIS) ID=bf ;; - NTFS|EXFAT) ID=7 ;; - HNTFS) ID=17 ;; - FAT32) ID=b ;; - HFAT32) ID=1b ;; - FAT16) ID=6 ;; - HFAT16) ID=16 ;; - FAT12) ID=1 ;; - HFAT12) ID=11 ;; - CACHE) ID=ca ;; - *) ogRaiseError $OG_ERR_PARTITION "$TYPE" - return $? ;; - esac + # Obtener identificador de tipo de partición. + ID=$(ogFsToId "$TYPE") + [ -n "$ID" ] || ogRaiseError $OG_ERR_PARTITION "$TYPE" || return $? + # Comprobar si la partición es extendida. + if [ $ID = 5 ]; then + [ $PART -gt 4 ] && ogRaiseError $OG_ERR_FORMAT && return $? + EXTSTART=$START + EXTSIZE=$SIZE + fi # Incluir particiones lógicas dentro de la partición extendida. if [ $PART = 5 ]; then [ -z "$EXTSTART" ] && ogRaiseError $OG_ERR_FORMAT && return $? @@ -100,7 +83,7 @@ while [ $# -gt 0 ]; do fi # Generar datos para la partición. echo "$DISK$PART : start=$START, size=$SIZE, Id=$ID" >>$tmpsfdisk - #/// Error si se supera el nº total de sectores. + # Error si se supera el nº total de sectores. START=$[START+SIZE] [ $START -gt $SECTORS ] && ogRaiseError $OG_ERR_FORMAT && return $? PART=$[PART+1] @@ -125,11 +108,11 @@ rm -f $tmpsfdisk #/** -# ogDevToDisk device +# ogDevToDisk path_device #@brief Devuelve el nº de orden de dicso (y partición) correspondiente al nombre de fichero de dispositivo. -#@arg \c path_device Camino del fichero de dispositivo. -#@return ndisk (para dispositivo de disco) -#@return ndisk npartition (para dispositivo de partición). +#@param path_device Camino del fichero de dispositivo. +#@return int_ndisk (para dispositivo de disco) +#@return int_ndisk int_npartition (para dispositivo de partición). #@exception OG_ERR_FORMAT Formato incorrecto. #@exception OG_ERR_NOTFOUND Dispositivo no detectado. #@note Requisitos: awk @@ -137,8 +120,8 @@ rm -f $tmpsfdisk #@author Ramon Gomez, ETSII Universidad Sevilla #@date 2009-07-20 #*/ ## -function ogDevToDisk () { - +function ogDevToDisk () +{ # Variables locales. local d n # Si se solicita, mostrar ayuda. @@ -150,7 +133,7 @@ fi # Error si no se recibe 1 parámetro. [ $# == 1 ] || ogRaiseError $OG_ERR_FORMAT || return $? -#/// Error si no es fichero de bloques. +# Error si no es fichero de bloques. [ -b "$1" ] || ogRaiseError $OG_ERR_NOTFOUND "$1" || return $? # Procesa todos los discos para devolver su nº de orden y de partición. @@ -165,10 +148,10 @@ return $OG_ERR_NOTFOUND #/** -# ogDiskToDev [ndisk [npartition]] +# ogDiskToDev [int_ndisk [int_npartition]] #@brief Devuelve la equivalencia entre el nº de orden del dispositivo (dicso o partición) y el nombre de fichero de dispositivo correspondiente. -#@arg \c int_ndisk nº de orden del disco -#@arg \c int_npartition nº de orden de la partición +#@param int_ndisk nº de orden del disco +#@param int_npartition nº de orden de la partición #@return Para 0 parametros: Devuelve los nombres de ficheros de los dispositivos sata/ata/usb linux encontrados. #@return Para 1 parametros: Devuelve la ruta del disco duro indicado. #@return Para 2 parametros: Devuelve la ruta de la particion indicada. @@ -179,8 +162,8 @@ return $OG_ERR_NOTFOUND #@author Ramon Gomez, ETSII Universidad Sevilla #@date 2009-07-20 #*/ ## -function ogDiskToDev () { - +function ogDiskToDev () +{ # Variables locales local ALLDISKS VOLGROUPS DISK PART @@ -236,9 +219,57 @@ esac #/** -# ogGetPartitionActive ndisk +# ogFsToId str_fstype +#@brief Devuelve el identificador de partición correspondiente a un tipo de sistema de archivos. +#@param str_fstype mnemónico de tipo de sistema de archivos +#@return int_idpart nº identificador de tipo de partición. +#@exception OG_ERR_FORMAT Formato incorrecto. +#@version 0.9 - Primera versión para OpenGNSys +#@author Ramon Gomez, ETSII Universidad Sevilla +#@date 2009-12-14 +#*/ ## +function ogFsToId () +{ +# Variables locales +local ID + +# Si se solicita, mostrar ayuda. +if [ "$*" == "help" ]; then + ogHelp "$FUNCNAME" "$FUNCNAME str_fstype" "$FUNCNAME EXT3 => 83" + return +fi +# Error si no se recibe 1 parámetro. +[ $# == 1 ] || ogRaiseError $OG_ERR_FORMAT || return $? + +# Asociar id. de partición para su mnemónico de sistema de archivos. +case "$1" in + EMPTY) ID=0 ;; + FAT12) ID=1 ;; + EXTENDED) ID=5 ;; + FAT16) ID=6 ;; + NTFS|EXFAT) ID=7 ;; + FAT32) ID=b ;; + HFAT12) ID=11 ;; + HFAT16) ID=16 ;; + HNTFS) ID=17 ;; + HFAT32) ID=1b ;; + LINUX-SWAP) ID=82 ;; + EXT[234]|REISERFS|REISER4|XFS|JFS) + ID=83 ;; + LINUX-LVM) ID=8e ;; + SOLARIS) ID=bf ;; + CACHE) ID=ca ;; + LINUX-RAID) ID=fd ;; + *) ID="" ;; +esac +echo $ID +} + + +#/** +# ogGetPartitionActive int_ndisk #@brief Muestra que particion de un disco esta marcada como de activa. -#@arg \c int_ndisk nº de orden del disco +#@param int_ndisk nº de orden del disco #@return Nº de partición activa #@exception OG_ERR_FORMAT Formato incorrecto. #@exception OG_ERR_NOTFOUND Disco o particion no corresponden con un dispositivo. @@ -248,8 +279,8 @@ esac #@author Ramon Gomez, ETSII Universidad de Sevilla #@date 2009/07/24 #*/ ## -function ogGetPartitionActive () { - +function ogGetPartitionActive () +{ # Variables locales local DISK @@ -268,10 +299,10 @@ parted $DISK print 2>/dev/null | awk '/boot/ {print $1}' #/** -# ogGetPartitionId ndisk npartition +# ogGetPartitionId int_ndisk int_npartition #@brief Devuelve el mnemonico con el tipo de sistema de archivos. -#@arg \c int_ndisk nº de orden del disco -#@arg \c int_npartition nº de orden de la partición +#@param int_ndisk nº de orden del disco +#@param int_npartition nº de orden de la partición #@return Identificador de tipo de partición. #@exception OG_ERR_FORMAT Formato incorrecto. #@exception OG_ERR_NOTFOUND Disco o particion no corresponden con un dispositivo. @@ -280,8 +311,8 @@ parted $DISK print 2>/dev/null | awk '/boot/ {print $1}' #@author Ramon Gomez, ETSII Universidad de Sevilla #@date 25/03/2009 #*/ ## -function ogGetPartitionId () { - +function ogGetPartitionId () +{ # Variables locales. local DISK PART @@ -302,11 +333,11 @@ echo $(sfdisk --id $DISK $2 2>/dev/null) #/** -# ogGetPartitionSize ndisk npartition +# ogGetPartitionSize int_ndisk int_npartition #@brief Muestra el tamano en KB de una particion determinada. -#@arg \c int_ndisk nº de orden del disco -#@arg \c int_npartition nº de orden de la partición -#@return tamañoKB +#@param int_ndisk nº de orden del disco +#@param int_npartition nº de orden de la partición +#@return int_partsize - Tamaño en KB de la partición. #@exception OG_ERR_FORMAT formato incorrecto. #@exception OG_ERR_NOTFOUND disco o particion no detectado (no es un dispositivo). #@note Requisitos: sfdisk, awk @@ -314,8 +345,8 @@ echo $(sfdisk --id $DISK $2 2>/dev/null) #@author Ramon Gomez, ETSII Universidad de Sevilla #@date 2009/07/24 #*/ ## -function ogGetPartitionSize () { - +function ogGetPartitionSize () +{ # Variables locales. local PART @@ -347,8 +378,8 @@ esac #/** # ogListPartitions int_ndisk #@brief Lista las particiones definidas en un disco. -#@arg \c int_ndisk nº de orden del disco -#@return tipo:tamanoKB ... +#@param int_ndisk nº de orden del disco +#@return str_parttype:int_partsize ... #@exception OG_ERR_FORMAT formato incorrecto. #@exception OG_ERR_NOTFOUND disco o particion no detectado (no es un dispositivo). #@note Requisitos: \c parted \c awk @@ -358,21 +389,21 @@ esac #@author Ramon Gomez, ETSII Universidad de Sevilla #@date 2009/07/24 #*/ ## -function ogListPartitions () { - +function ogListPartitions () +{ # Variables locales. local DISK PART NPARTS TYPE SIZE -#/// Si se solicita, mostrar ayuda. +# Si se solicita, mostrar ayuda. if [ "$*" == "help" ]; then ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk" \ "$FUNCNAME 1 => NTFS:10000000 EXT3:5000000 LINUX-SWAP:1000000" return fi -#/// Error si no se recibe 1 parámetro. +# Error si no se recibe 1 parámetro. [ $# == 1 ] || ogRaiseError $OG_ERR_FORMAT "$FORMAT" || return $? -#/// Procesar la salida de \c parted . +# Procesar la salida de \c parted . DISK="$(ogDiskToDev $1)" || return $? NPARTS=$(ogGetPartitionsNumber $1) for (( PART = 1; PART <= NPARTS; PART++ )); do @@ -391,11 +422,11 @@ echo #/** # ogListPrimaryPartitions int_ndisk #@brief Metafunción que lista las particiones primarias no vacías definidas en un disco. -#@arg \c int_ndisk nº de orden del disco +#@param int_ndisk nº de orden del disco #@see ogListPartitions #*/ ## -function ogListPrimaryPartitions () { - +function ogListPrimaryPartitions () +{ # Variables locales. local PARTS @@ -407,11 +438,11 @@ echo $PARTS | cut -sf1-4 -d" " | sed 's/\( EMPTY:0\)*$//' #/** # ogListLogicalPartitions int_ndisk #@brief Metafunción que lista las particiones lógicas definidas en un disco. -#@arg \c int_ndisk nº de orden del disco +#@param int_ndisk nº de orden del disco #@see ogListPartitions #*/ ## -function ogListLogicalPartitions () { - +function ogListLogicalPartitions +() { # Variables locales. local PARTS @@ -421,11 +452,11 @@ echo $PARTS | cut -sf5- -d" " #/** -# ogSetPartitionActive ndisk npartition +# ogSetPartitionActive int_ndisk int_npartition #@brief Establece cual es la partición activa de un disco. -#@arg \c int_ndisk nº de orden del disco -#@arg \c int_npartition nº de orden de la partición -#@return Nada. +#@param int_ndisk nº de orden del disco +#@param int_npartition nº de orden de la partición +#@return (nada). #@exception OG_ERR_FORMAT Formato incorrecto. #@exception OG_ERR_NOTFOUND Disco o partición no corresponden con un dispositivo. #@note Requisitos: parted @@ -433,8 +464,8 @@ echo $PARTS | cut -sf5- -d" " #@author Ramon Gomez, ETSII Universidad de Sevilla #@date 2009/09/17 #*/ ## -function ogSetPartitionActive () { - +function ogSetPartitionActive () +{ # Variables locales local DISK PART @@ -455,11 +486,11 @@ parted -s $DISK set $2 boot on 2>/dev/null #/** -# ogSetPartitionSize ndisk npartition size +# ogSetPartitionSize int_ndisk int_npartition int_size #@brief Muestra el tamano en KB de una particion determinada. -#@arg \c int_ndisk nº de orden del disco -#@arg \c int_npartition nº de orden de la partición -#@arg \c int_size tamaño de la partición (en KB) +#@param int_ndisk nº de orden del disco +#@param int_npartition nº de orden de la partición +#@param int_size tamaño de la partición (en KB) #@return (nada) #@exception OG_ERR_FORMAT formato incorrecto. #@exception OG_ERR_NOTFOUND disco o particion no detectado (no es un dispositivo). @@ -469,8 +500,8 @@ parted -s $DISK set $2 boot on 2>/dev/null #@author Ramon Gomez, ETSII Universidad de Sevilla #@date 2009/07/24 #*/ ## -function ogSetPartitionSize () { - +function ogSetPartitionSize () +{ # Variables locales. local DISK PART SIZE @@ -496,7 +527,7 @@ sfdisk -f -uS -N$2 $DISK <<< ",$SIZE" &>/dev/null || ogRaiseError $OG_ERR_PARTIT #/** # ogUpdatePartitionTable #@brief Fuerza al kernel releer la tabla de particiones de los discos duros -#@arg \c no requiere +#@param no requiere #@return informacion propia de la herramienta #@note Requisitos: \c partprobe #@warning pendiente estructurar la funcion a opengnsys @@ -504,7 +535,8 @@ sfdisk -f -uS -N$2 $DISK <<< ",$SIZE" &>/dev/null || ogRaiseError $OG_ERR_PARTIT #@note funcion importada de EAC #*/ -function ogUpdatePartitionTable () { +function ogUpdatePartitionTable () +{ echo "Forzando al kernel la lectura de la tabla de particiones" list=`partprobe -s | cut -f1 -d: ` 2>/dev/null echo $list > /tmp/disk @@ -515,7 +547,7 @@ echo $list > /tmp/disk function ogGetPartitionsNumber () { #/** @function ogGetPartitionsNumber: @brief detecta el numero de particiones del disco duro indicado. -#@param int_numdisk (indentificado EAC del disco) +#@param int_numdisk (indentificado EAC del disco) #@return devuelve el numero paritiones del disco duro indicado #@warning Salidas de errores no determinada #@attention Requisitos: parted @@ -602,41 +634,23 @@ function ogSetPartitionId() { # Variables locales local DISK PART ID -#/// Si se solicita, mostrar ayuda. +# Si se solicita, mostrar ayuda. if [ "$*" == "help" ]; then ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk int_npartition" \ "$FUNCNAME 1 1 10000000" return fi -#/// Error si no se reciben 3 parámetros. +# Error si no se reciben 3 parámetros. [ $# == 3 ] || ogRaiseError $OG_ERR_FORMAT || return $? -#/// Sustituye nº de disco por su dispositivo. +# Sustituye nº de disco por su dispositivo. DISK=`ogDiskToDev $1` || return $? PART=`ogDiskToDev $1 $2` || return $? -#/// Elección del tipo de partición. -case "$3" in - EMPTY) ID=0 ;; - FAT12) ID=1 ;; - EXTENDED) ID=5 ;; - FAT16) ID=6 ;; - NTFS|EXFAT) ID=7 ;; - FAT32) ID=b ;; - HFAT12) ID=11 ;; - HFAT16) ID=16 ;; - HNTFS) ID=17 ;; - HFAT32) ID=1b ;; - LINUX-SWAP) ID=82 ;; - LINUX-LVM) ID=8e ;; - EXT[234]|REISERFS|REISER4|XFS|JFS) - ID=83 ;; - SOLARIS) ID=bf ;; - CACHE) ID=ca ;; - LINUX-RAID) ID=fd ;; - *) ogRaiseError $OG_ERR_PARTITION "$TYPE" - return $? ;; -esac +# Elección del tipo de partición. +ID=$(ogFsToId "$3") +[ -n "$ID" ] || ogRaiseError $OG_ERR_PARTITION "$TYPE" || return $? + echo -ne "t\n$2\n${ID}\nw\n" | fdisk $DISK 1>/dev/null 2>&1 } diff --git a/client/engine/File.lib b/client/engine/File.lib index 5607cc87..087504bb 100755 --- a/client/engine/File.lib +++ b/client/engine/File.lib @@ -18,8 +18,8 @@ #@author Ramon Gomez, ETSII Universidad de Sevilla #@date 2009-10-20 #*/ ## -function ogCopyFile () { - +function ogCopyFile () +{ # Variables locales. local ARGS SOURCE TARGET @@ -52,7 +52,8 @@ cp -p "$SOURCE" "$TARGET" # (definir posible error) #@author Ramon Gomez, ETSII Universidad de Sevilla #@date 2009-09-29 #*/ ## -function ogDeleteFile () { +function ogDeleteFile () +{ # Variables locales. local FILE # Comprobar que existe el fichero y borrarlo. @@ -70,8 +71,8 @@ rm -f "$FILE" || ogRaiseError $OG_ERR_NOTFOUND "$*" || return $? #@author Ramon Gomez, ETSII Universidad de Sevilla #@date 2009-09-29 #*/ ## -function ogDeleteTree () { - +function ogDeleteTree () +{ # Variables locales. local DIR # Comprobar que existe el directorio y borrarlo con su contenido. @@ -84,10 +85,10 @@ rm -fr "$DIR" || ogRaiseError $OG_ERR_NOTFOUND "$*" || return $? #/** # ogGetPath [ str_repo | int_ndisk int_npartition ] path_filepath #@brief Inicia el proceso de arranque de un sistema de archivos. -#@arg \c filepath camino del fichero (independiente de mayúsculas) -#@arg \c repo repositorio de ficheros -#@arg \c ndisk nº de orden del disco -#@arg \c npartition nº de orden de la partición +#@param path_filepath camino del fichero (independiente de mayúsculas) +#@param str_repo repositorio de ficheros +#@param int_ndisk nº de orden del disco +#@param int_npartition nº de orden de la partición #@return path_file - camino completo real del fichero. #@note repo = { REPO, CACHE, CDROM } #@note Requisitos: \c grep \c sed @@ -100,8 +101,8 @@ rm -fr "$DIR" || ogRaiseError $OG_ERR_NOTFOUND "$*" || return $? #@author Ramon Gomez, ETSII Universidad de Sevilla #@date 2009-09-15 #*/ ## -function ogGetPath () { - +function ogGetPath () +{ # Variables locales. local MNTDIR FILE PREVFILE FILEPATH CURRENTDIR @@ -160,10 +161,11 @@ cd $CURRENTDIR #@author Ramon Gomez, ETSII Universidad de Sevilla #@date 2009-09-29 #*/ ## -function ogGetParentPath () { +function ogGetParentPath () +{ local PARENT case $# in - 1) PARENT="$(dirname "$1")" ;; + 1) PARENT=$(dirname "$1") ;; 2) PARENT="$1 $(dirname "/$2")" ;; 3) PARENT="$1 $2 $(dirname "/$3")" ;; *) ogRaiseError $OG_ERR_FORMAT @@ -181,7 +183,8 @@ ogGetPath $PARENT #@author Ramon Gomez, ETSII Universidad de Sevilla #@date 2009-09-29 #*/ ## -function ogMakeDir () { +function ogMakeDir () +{ local PARENT DIR PARENT=$(ogGetParentPath "$@") || return $? DIR="$(basename "${!#}")" @@ -192,10 +195,10 @@ mkdir -p "$PARENT/$DIR" || ogRaiseError $OG_ERR_NOTFOUND "$*" || return $? #/** # ogNewPath [ str_repo | int_ndisk int_npartition ] path_filepath #@brief Crea el directorio especificado -#@arg \c filepath camino del fichero (independiente de mayúsculas) -#@arg \c repo repositorio de ficheros -#@arg \c ndisk nº de orden del disco -#@arg \c npartition nº de orden de la partición +#@param path_filepath camino del fichero (independiente de mayúsculas) +#@param str_repo repositorio de ficheros +#@param int_ndisk nº de orden del disco +#@param int_npartition nº de orden de la partición #@return file - camino completo real del directorio creado #@note repo = { REPO, CACHE } #@note Requisitos: \c grep \c sed @@ -208,8 +211,8 @@ mkdir -p "$PARENT/$DIR" || ogRaiseError $OG_ERR_NOTFOUND "$*" || return $? #@author obtenido de ogGetPath de Ramon Gomez, ETSII Universidad de Sevilla #@date 2009-09-15 #*/ -function ogNewPath () { - +function ogNewPath () +{ # Variables locales. local MNTDIR FILE PREVFILE FILEPATH CURRENTDIR diff --git a/client/engine/FileSystem.lib b/client/engine/FileSystem.lib index 9b0bd52f..f24b5a0e 100755 --- a/client/engine/FileSystem.lib +++ b/client/engine/FileSystem.lib @@ -12,8 +12,8 @@ #/** # ogCheckFs int_ndisk int_npartition #@brief Comprueba el estado de un sistema de archivos. -#@arg \c int_ndisk nº de orden del disco -#@arg \c int_npartition nº de orden de la partición +#@param int_ndisk nº de orden del disco +#@param int_npartition nº de orden de la partición #@return (nada) #@exception OG_ERR_FORMAT Formato incorrecto. #@exception OG_ERR_NOTFOUND Disco o particion no corresponden con un dispositivo. @@ -25,8 +25,8 @@ #@author Ramon Gomez, ETSII Universidad de Sevilla #@date 2009-10-07 #*/ -function ogCheckFs () { - +function ogCheckFs () +{ # Variables locales. local PART TYPE PROG PARAMS @@ -74,8 +74,8 @@ return $ERRCODE #/** # ogExtendFs int_ndisk int_npartition #@brief Extiende un sistema de archivos al tamaño de su partición. -#@arg \c int_ndisk nº de orden del disco -#@arg \c int_npartition nº de orden de la partición +#@param int_ndisk nº de orden del disco +#@param int_npartition nº de orden de la partición #@return (nada) #@exception OG_ERR_FORMAT Formato incorrecto. #@exception OG_ERR_NOTFOUND Disco o particion no corresponden con un dispositivo. @@ -85,8 +85,8 @@ return $ERRCODE #@author Ramon Gomez, ETSII Universidad de Sevilla #@date 2009-09-23 #*/ -function ogExtendFs () { - +function ogExtendFs () +{ # Variables locales. local PART PROG PARAMS @@ -139,7 +139,8 @@ return $ERRCODE # ogFormat int_ndisk int_npartition #@see ogFormatFs #*/ -function ogFormat () { +function ogFormat () +{ ogFormatFs "$@" } @@ -147,10 +148,10 @@ ogFormatFs "$@" #/** # ogFoarmatFs int_ndisk int_npartition [type_fstype] [str_label] #@brief Formatea un sistema de ficheros según el tipo de su partición. -#@arg \c int_ndisk nº de orden del disco -#@arg \c int_npartition nº de orden de la partición -#@arg \c type_fstype mnemónico de sistema de ficheros a formatear -#@arg \c str_label etiqueta de volumen (opcional) +#@param int_ndisk nº de orden del disco +#@param int_npartition nº de orden de la partición +#@param type_fstype mnemónico de sistema de ficheros a formatear +#@param str_label etiqueta de volumen (opcional) #@return (por determinar) #@exception OG_ERR_FORMAT Formato incorrecto. #@exception OG_ERR_NOTFOUND Disco o particion no corresponden con un dispositivo. @@ -162,12 +163,12 @@ ogFormatFs "$@" #@author Ramon Gomez, ETSII Universidad de Sevilla #@date 2009-10-08 #*/ ## -function ogFormatFs () { - +function ogFormatFs () +{ # Variables locales local PART ID TYPE LABEL PROG PARAMS ERRCODE -#/// Si se solicita, mostrar ayuda. +# Si se solicita, mostrar ayuda. if [ "$*" == "help" ]; then ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk int_npartition [str_label]" \ "$FUNCNAME 1 1" \ @@ -258,8 +259,8 @@ return $ERRCODE #/** # ogGetFsType int_ndisk int_npartition #@brief Devuelve el mnemonico con el tipo de sistema de archivos. -#@arg \c int_ndisk nº de orden del disco -#@arg \c int_npartition nº de orden de la partición +#@param int_ndisk nº de orden del disco +#@param int_npartition nº de orden de la partición #@return Mnemonico #@note Mnemonico: { EXT2, EXT3, EXT4, REISERFS, XFS, JFS, LINUX-SWAP, LINUX-LVM, LINUX-RAID, SOLARIS, FAT16, HFAT16, FAT32, HFAT32, NTFS, HNTFS, WIN-DYNAMIC, CACHE, EMPTY, EXTENDED, UNKNOWN } #@exception OG_ERR_FORMAT Formato incorrecto. @@ -300,8 +301,8 @@ case "$ID" in 42) TYPE="WIN-DYNAMIC" ;; 82) TYPE="LINUX-SWAP" ;; 83) TYPE="$(parted -s $DISK print | awk -v var=$2 '{if ($1==var) {print toupper($6)}}')" - TYPE=${TYPE:-"EXT3"} - ;; + TYPE=${TYPE:-"EXT3"} + ;; 8e) TYPE="LINUX-LVM" ;; a7) TYPE="CACHE" ;; # (compatibilidad con Brutalix) bf) TYPE="SOLARIS" ;; @@ -316,8 +317,8 @@ echo $TYPE #/** # ogGetMountPoint int_ndisk int_npartition #@brief Devuelve el punto de montaje de un sistema de archivos. -#@arg \c int_ndisk nº de orden del disco -#@arg \c int_npartition nº de orden de la partición +#@param int_ndisk nº de orden del disco +#@param int_npartition nº de orden de la partición #@return Punto de montaje #@exception OG_ERR_FORMAT Formato incorrecto. #@exception OG_ERR_NOTFOUND Disco o particion no corresponden con un dispositivo. @@ -326,8 +327,8 @@ echo $TYPE #@author Ramon Gomez, ETSII Universidad de Sevilla #@date 2009-10-15 #*/ ## -function ogGetMountPoint () { - +function ogGetMountPoint () +{ # Variables locales local PART # Si se solicita, mostrar ayuda. @@ -348,16 +349,16 @@ echo $(mount | awk -v P=$PART '{if ($1==P) {print $3}}') #/** # ogIsMounted int_ndisk int_npartition #@brief Comprueba si un sistema de archivos está montado. -#@arg \c int_ndisk nº de orden del disco -#@arg \c int_npartition nº de orden de la partición +#@param int_ndisk nº de orden del disco +#@param int_npartition nº de orden de la partición #@return Código de salida: 0 - sin montar, 1 - montado. #@version 0.9 - Primera versión para OpenGNSys. #@author Ramon Gomez, ETSII Universidad de Sevilla #@date 2009-10-15 #*/ ## -function ogIsMounted () { - -#/// Si se solicita, mostrar ayuda. +function ogIsMounted () +{ +# Si se solicita, mostrar ayuda. if [ "$*" == "help" ]; then ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk int_npartition" \ "if $FUNCNAME 1 1; then ... ; fi" @@ -373,16 +374,16 @@ test -n "$(ogGetMountPoint $1 $2)" #/** # ogIsLocked int_ndisk int_npartition #@brief Comprueba si una partición está bloqueada por una operación de uso exclusivo. -#@arg \c int_ndisk nº de orden del disco -#@arg \c int_npartition nº de orden de la partición +#@param int_ndisk nº de orden del disco +#@param int_npartition nº de orden de la partición #@return Código de salida: 0 - sin bloquear, 1 - bloqueada. #@note El fichero de bloqueo se localiza en \c /var/lock/part, siendo \c part el dispositivo de la partición, sustituyendo el carácter "/" por "-". #@version 0.9 - Primera versión para OpenGNSys. #@author Ramon Gomez, ETSII Universidad de Sevilla #@date 2009-09-03 #*/ ## -function ogIsLocked () { - +function ogIsLocked () +{ # Variables locales local PART LOCKFILE @@ -408,15 +409,16 @@ test -f $LOCKFILE # ogLock int_ndisk int_npartition #@see ogLockPartition #*/ -function ogLock () { +function ogLock () +{ ogLockPartition "$@" } #/** # ogLockPartition int_ndisk int_npartition #@brief Genera un fichero de bloqueo para una partición en uso exlusivo. -#@arg \c int_ndisk nº de orden del disco -#@arg \c int_npartition nº de orden de la partición +#@param int_ndisk nº de orden del disco +#@param int_npartition nº de orden de la partición #@return (nada) #@exception OG_ERR_FORMAT Formato incorrecto. #@exception OG_ERR_NOTFOUND Disco o particion no corresponden con un dispositivo. @@ -425,8 +427,8 @@ ogLockPartition "$@" #@author Ramon Gomez, ETSII Universidad de Sevilla #@date 2009-09-03 #*/ ## -function ogLockPartition () { - +function ogLockPartition () +{ # Variables locales local PART LOCKFILE @@ -452,7 +454,8 @@ touch $LOCKFILE # ogMount int_ndisk int_npartition #@see ogMountFs ogMountCache ogMountCdrom #*/ ## -function ogMount () { +function ogMount () +{ case "$*" in CACHE|cache) ogMountCache ;; @@ -466,8 +469,8 @@ esac #/** # ogMountFs int_ndisk int_npartition #@brief Monta un sistema de archivos. -#@arg \c int_ndisk nº de orden del disco -#@arg \c int_npartition nº de orden de la partición +#@param int_ndisk nº de orden del disco +#@param int_npartition nº de orden de la partición #@return Punto de montaje #@exception OG_ERR_FORMAT Formato incorrecto. #@exception OG_ERR_NOTFOUND Disco o particion no corresponden con un dispositivo. @@ -476,8 +479,8 @@ esac #@author Ramon Gomez, ETSII Universidad de Sevilla #@date 2009-09-28 #*/ ## -function ogMountFs () { - +function ogMountFs () +{ # Variables locales local PART TYPE MNTDIR MOUNT PARAMS @@ -535,7 +538,8 @@ echo $MNTDIR ##### PRUEBAS # Montar CDROM -function ogMountCdrom () { +function ogMountCdrom () +{ local DEV MNTDIR DEV="/dev/cdrom" # Por defecto MNTDIR=$(mount | awk -v D=$DEV '{if ($1==D) {print $3}}') @@ -551,8 +555,8 @@ echo $MNTDIR #/** # ogReduceFs int_ndisk int_npartition #@brief Reduce el tamaño del sistema de archivos, sin tener en cuenta el espacio libre. -#@arg \c int_ndisk nº de orden del disco -#@arg \c int_npartition nº de orden de la partición +#@param int_ndisk nº de orden del disco +#@param int_npartition nº de orden de la partición #@return tamañoKB #@exception OG_ERR_FORMAT Formato incorrecto. #@exception OG_ERR_NOTFOUND Disco o particion no corresponden con un dispositivo. @@ -564,8 +568,8 @@ echo $MNTDIR #@author Ramon Gomez, ETSII Universidad de Sevilla #@date 2009-09-23 #*/ ## -function ogReduceFs () { - +function ogReduceFs () +{ # Variables locales local PART BLKS SIZE @@ -615,15 +619,16 @@ echo $[SIZE*1024] # ogUnlock int_ndisk int_npartition #@see ogUnlockPartition #*/ -function ogUnlock () { +function ogUnlock () +{ ogUnlockPartition "$@" } #/** # ogUnlockPartition int_ndisk int_npartition #@brief Elimina el fichero de bloqueo para una particion. -#@arg \c int_ndisk nº de orden del disco -#@arg \c int_npartition nº de orden de la partición +#@param int_ndisk nº de orden del disco +#@param int_npartition nº de orden de la partición #@return (nada) #@exception OG_ERR_FORMAT Formato incorrecto. #@exception OG_ERR_NOTFOUND Disco o particion no corresponden con un dispositivo. @@ -632,8 +637,8 @@ ogUnlockPartition "$@" #@author Ramon Gomez, ETSII Universidad de Sevilla #@date 2009-09-03 #*/ ## -function ogUnlockPartition () { - +function ogUnlockPartition () +{ # Variables locales local PART LOCKFILE @@ -659,15 +664,16 @@ rm -f $LOCKFILE # ogUnmount int_ndisk int_npartition #@see ogUnmountFs #*/ -function ogUnmount () { +function ogUnmount () +{ ogUnmountFs "$@" } #/** # ogUnmountFs int_ndisk int_npartition #@brief Desmonta un sistema de archivos. -#@arg \c int_ndisk nº de orden del disco -#@arg \c int_npartition nº de orden de la partición +#@param int_ndisk nº de orden del disco +#@param int_npartition nº de orden de la partición #@return Nada #@exception OG_ERR_FORMAT Formato incorrecto. #@exception OG_ERR_NOTFOUND Disco o particion no corresponden con un dispositivo. @@ -676,8 +682,8 @@ ogUnmountFs "$@" #@author Ramon Gomez, ETSII Universidad de Sevilla #@date 2009-09-28 #*/ ## -function ogUnmountFs () { - +function ogUnmountFs () +{ # Variables locales local PART MNTDIR @@ -713,7 +719,7 @@ fi #/** # ogUnmountAll int_ndisk #@brief Desmonta todos los sistema de archivos de un disco, excepto el caché local. -#@arg \c int_ndisk nº de orden del disco +#@param int_ndisk nº de orden del disco #@return Nada #@exception OG_ERR_FORMAT Formato incorrecto. #@exception OG_ERR_NOTFOUND Disco o particion no corresponden con un dispositivo. @@ -722,8 +728,8 @@ fi #@author Ramon Gomez, ETSII Universidad de Sevilla #@date 2009/10/07 #*/ ## -function ogUnmountAll () { - +function ogUnmountAll () +{ # Variables locales local DISK PART # Si se solicita, mostrar ayuda. diff --git a/client/engine/Image.lib b/client/engine/Image.lib index 4972120c..463d196e 100755 --- a/client/engine/Image.lib +++ b/client/engine/Image.lib @@ -12,10 +12,10 @@ #/** # ogCreateImage int_ndisk int_npartition str_repo path_image #@brief Crea una imagen a partir de una partición. -#@arg \c int_ndisk nº de orden del disco -#@arg \c int_npartition nº de orden de la partición -#@arg \c str_repo repositorio de imágenes (remoto o caché local) -#@arg \c path_image camino de la imagen (sin extensión) +#@param int_ndisk nº de orden del disco +#@param int_npartition nº de orden de la partición +#@param str_repo repositorio de imágenes (remoto o caché local) +#@param path_image camino de la imagen (sin extensión) #@return (nada, por determinar) #@note repo = { REPO, CACHE } #@exception OG_ERR_FORMAT formato incorrecto. @@ -29,18 +29,18 @@ #@author Ramon Gomez, ETSII Universidad de Sevilla #@date 2009/10/07 #*/ ## -function ogCreateImage () { - +function ogCreateImage () +{ # Variables locales local PART IMGDIR IMGFILE ERRCODE -#/// Si se solicita, mostrar ayuda. +# Si se solicita, mostrar ayuda. if [ "$*" == "help" ]; then ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk int_npart path_dir str_image" \ "$FUNCNAME 1 1 REPO /aula1/winxp" return fi -#/// Error si no se reciben menos de 2 parámetros. +# Error si no se reciben menos de 2 parámetros. [ $# -lt 4 ] && ogRaiseError $OG_ERR_FORMAT && return $? PART="$(ogDiskToDev $1 $2)" || return $? @@ -71,7 +71,7 @@ case "$TYPE" in return $? ;; esac -#/// Controlar salida de error y desbloquear partición. +# Controlar salida de error y desbloquear partición. ERRCODE=$? if [ $ERRCODE != 0 ]; then ogRaiseError $OG_ERR_IMAGE "$1 $2 $IMGFILE" @@ -85,8 +85,8 @@ return $ERRCODE #/** # ogGetImageSize str_repo path_image #@brief Devuelve el tamaño del sistema de archivos almacenado en un fichero de imagen. -#@arg \c str_repo repositorio de imágenes o caché local -#@arg \c path_image camino de la imagen +#@param str_repo repositorio de imágenes o caché local +#@param path_image camino de la imagen #@return tamaño (en KB) #@exception OG_ERR_FORMAT formato incorrecto. #@exception OG_ERR_NOTFOUND fichero de imagen no encontrado. @@ -97,24 +97,24 @@ return $ERRCODE #@author Ramon Gomez, ETSII Universidad de Sevilla #@date 2009/09/11 #*/ ## -function ogGetImageSize () { - +function ogGetImageSize () +{ # Variables locales local IMGFILE -#/// Si se solicita, mostrar ayuda. +# Si se solicita, mostrar ayuda. if [ "$*" == "help" ]; then ogHelp "$FUNCNAME" "$FUNCNAME path_dir str_image int_ndisk int_npart" \ "$FUNCNAME 1 1 REPO /aula1/winxp ==> 5642158" return fi -#/// Error si no se reciben menos de 2 parámetros. +# Error si no se reciben menos de 2 parámetros. [ $# -lt 2 ] && ogRaiseError $OG_ERR_FORMAT && return $? -#/// Error si el fichero de imagen no es accesible. +# Error si el fichero de imagen no es accesible. IMGFILE=$(ogGetPath "$1" "$2.img") || return $? [ -r "$IMGFILE" ] || ogRaiseError OG_ERR_NOTFOUND "$IMGFILE" || return $? -#/// Devuelve el tamaño de la imagen en KB. +# Devuelve el tamaño de la imagen en KB. partimage -B gui=no imginfo "$IMGFILE" 2>&1 | \ awk '/Partition size/ {sub(/\.\.+/," "); printf "%d\n",$3*1024*1024;}' } @@ -122,7 +122,8 @@ partimage -B gui=no imginfo "$IMGFILE" 2>&1 | \ #### PRUEBAS # Obtener tipo de imagen -function ogGetImageType () { +function ogGetImageType () +{ local IMGFILE IMGFILE=$(ogGetPath "$1" "$2.img") || return $? [ -r "$IMGFILE" ] || ogRaiseError OG_ERR_NOTFOUND "$IMGFILE" || return $? @@ -134,10 +135,10 @@ partimage -B gui=no imginfo "$IMGFILE" 2>&1 | \ #/** # ogRestoreImage str_repo path_image int_ndisk int_npartition #@brief Restaura una imagen de sistema de archivos en una partición. -#@arg \c str_repo repositorio de imágenes o caché local -#@arg \c path_image camino de la imagen -#@arg \c int_ndisk nº de orden del disco -#@arg \c int_npartition nº de orden de la partición +#@param str_repo repositorio de imágenes o caché local +#@param path_image camino de la imagen +#@param int_ndisk nº de orden del disco +#@param int_npartition nº de orden de la partición #@return (por determinar) #@exception OG_ERR_FORMAT formato incorrecto. #@exception OG_ERR_NOTFOUND fichero de imagen o partición no detectados. @@ -149,24 +150,24 @@ partimage -B gui=no imginfo "$IMGFILE" 2>&1 | \ #@author Ramon Gomez, ETSII Universidad de Sevilla #@date 2009/09/10 #*/ ## -function ogRestoreImage () { - +function ogRestoreImage () +{ # Variables locales local PART PARTSIZE IMGFILE IMGSIZE -#/// Si se solicita, mostrar ayuda. +# Si se solicita, mostrar ayuda. if [ "$*" == "help" ]; then ogHelp "$FUNCNAME" "$FUNCNAME path_dir str_image int_ndisk int_npart" \ "$FUNCNAME REPO /aula1/winxp 1 1" return fi -#/// Error si no se reciben 4 parámetros. +# Error si no se reciben 4 parámetros. [ $# -lt 4 ] && ogRaiseError $OG_ERR_FORMAT && return $? # Procesar parámetros. PART="$(ogDiskToDev "$3" "$4")" || return $? IMGFILE=$(ogGetPath "$1" "$2.img") || return $? [ -r "$IMGFILE" ] || ogRaiseError OG_ERR_NOTFOUND "$IMGFILE" || return $? -#/// Error si la imagen no cabe en la particion. +# Error si la imagen no cabe en la particion. IMGSIZE=$(ogGetImageSize "$1" "$2") PARTSIZE=$(ogGetPartitionSize $3 $4) if [ $IMGSIZE -gt $PARTSIZE ]; then @@ -174,7 +175,7 @@ if [ $IMGSIZE -gt $PARTSIZE ]; then return $? fi -#/// Comprobar el bloqueo de la partición, desmontarla y bloquearla. +# Comprobar el bloqueo de la partición, desmontarla y bloquearla. if ogIsLocked $3 $4; then ogRaiseError $OG_ERR_LOCKED "$3,$4" return $? @@ -183,8 +184,8 @@ ogUnmount $3 $4 2>/dev/null || return $? ogLock $3 $4 || return $? trap "ogUnlock $3 $4" 1 2 3 6 9 -#/// Restaurar según el tipo de sistema de archivos. -#/// Atención: no se comprueba incongruencia entre partición e imagen. +# Restaurar según el tipo de sistema de archivos. +# Atención: no se comprueba incongruencia entre partición e imagen. TYPE="$(ogGetFsType $3 $4)" case "$TYPE" in EXT[234]|REISERFS|XFS|JFS) diff --git a/client/engine/Inventory.lib b/client/engine/Inventory.lib index 88b80e26..007577c5 100755 --- a/client/engine/Inventory.lib +++ b/client/engine/Inventory.lib @@ -12,8 +12,8 @@ #/** # ogGetOsVersion int_ndisk int_npartition #@brief Devuelve la versión del sistema operativo instalado en un sistema de archivos. -#@arg \c int_ndisk nº de orden del disco -#@arg \c int_npartition nº de orden de la partición +#@param int_ndisk nº de orden del disco +#@param int_npartition nº de orden de la partición #@return OSType:OSVersion #@note TipoSistema = { Linux, Windows } #@note Requisitos: awk, head, chroot @@ -24,29 +24,29 @@ #@author Ramon Gomez, ETSII Universidad de Sevilla #@date 2009-09-15 #*/ ## -function ogGetOsVersion () { - +function ogGetOsVersion () +{ # Variables locales. local MNTDIR TYPE VERSION FILE -#/// Si se solicita, mostrar ayuda. +# Si se solicita, mostrar ayuda. if [ "$*" == "help" ]; then ogHelp "$FUNCNAME" "$FUNCNAME" return fi -#/// Error si no se reciben 2 parametros. +# Error si no se reciben 2 parametros. [ $# = 2 ] || ogRaiseError $OG_ERR_FORMAT || return $? # Montar la particion, si no lo estaba previamente. MNTDIR=$(ogMount $1 $2) || return $? -#/// Elección del tipo de sistema operativo. +# Elección del tipo de sistema operativo. case "$(ogGetFsType $1 $2)" in EXT[234] | REISERFS | REISER4) TYPE="Linux" - #/// Para Linux: leer descripción. + # Para Linux: leer descripción. VERSION=$(chroot $MNTDIR lsb_release -d 2>/dev/null| awk -F: '{gsub (/\t/,""); print $2}') - #/// Si no se puede obtener, buscar en ficheros del sistema. + # Si no se puede obtener, buscar en ficheros del sistema. if [ -z "$VERSION" ]; then FILE="$MNTDIR/etc/lsb-release" [ -r $FILE ] && VERSION="$(awk 'BEGIN {FS="="}; $1~/DESCRIPTION/ {gsub(/\"/,"",$2); print $2}' $FILE)" @@ -59,12 +59,12 @@ case "$(ogGetFsType $1 $2)" in ;; NTFS | HTNFS | FAT32 | HFAT32) TYPE="Windows" - #/// Para Windows: leer la version del registro. + # Para Windows: leer la version del registro. VERSION=$(ogGetRegistryValue $MNTDIR software '\Microsoft\Windows NT\CurrentVersion\ProductName') ;; esac -#/// Mostrar resultado y salir sin errores. +# Mostrar resultado y salir sin errores. [ -n "$VERSION" ] && echo "$TYPE:$VERSION" return 0 } @@ -73,13 +73,14 @@ return 0 #/** # ogGetOsType int_ndisk int_npartition #@brief Devuelve el tipo del sistema operativo instalado. -#@arg \c int_ndisk nº de orden del disco -#@arg \c int_npartition nº de orden de la partición +#@param int_ndisk nº de orden del disco +#@param int_npartition nº de orden de la partición #@return OSType #@note OSType = { Linux, Windows } #@see ogGetOsVersion #*/ ## -function ogGetOsType () { +function ogGetOsType () +{ ogGetOsVersion "$@" | cut -sf1 -d: } @@ -95,15 +96,15 @@ ogGetOsVersion "$@" | cut -sf1 -d: #@author Ramon Gomez, ETSII Universidad de Sevilla #@date 2009-07-28 #*/ ## -function ogListHardwareInfo () { - -#/// Si se solicita, mostrar ayuda. +function ogListHardwareInfo () +{ +# Si se solicita, mostrar ayuda. if [ "$*" == "help" ]; then ogHelp "$FUNCNAME" "$FUNCNAME" return fi -#/// Recopilación de disposibivos procesando la salida de \c lshw +# Recopilación de disposibivos procesando la salida de \c lshw ogEcho info "$MSG_HARDWAREINVENTORY}" lshw | awk 'BEGIN {type="mod";} /product:/ {sub(/ *product: */,""); prod=$0;} @@ -132,14 +133,16 @@ lshw | awk 'BEGIN {type="mod";} END {if (type!="" && prod!="") print type"="vend,prod,size,vers;} ' -# */ (necesario para Doxygen) +# */ (comentario para Doxygen) } #/** -# ogListSoftware +# ogListSoftware int_ndisk int_npartition #@brief Lista el inventario de software instalado en un sistema operativo. -#@return programa versión +#@param int_ndisk nº de orden del disco +#@param int_npartition nº de orden de la partición +#@return programa versión ... #@warning Se ignoran los parámetros de entrada. #@note Requisitos: ... #@todo Detectar software en Linux @@ -147,20 +150,20 @@ lshw | awk 'BEGIN {type="mod";} #@author Ramon Gomez, ETSII Universidad de Sevilla #@date 2009-09-23 #*/ ## -function ogListSoftware () { - +function ogListSoftware () +{ # Variables locales. local MNTDIR TYPE DPKGDIR RPMDIR KEYS k PROG VERS -#/// Si se solicita, mostrar ayuda. +# Si se solicita, mostrar ayuda. if [ "$*" == "help" ]; then ogHelp "$FUNCNAME" "$FUNCNAME 1 1" return fi -#/// Error si no se reciben 2 parametros. +# Error si no se reciben 2 parametros. [ $# = 2 ] || ogRaiseError $OG_ERR_FORMAT || return $? -#/// Obtener tipo de sistema de archivos y montarlo. +# Obtener tipo de sistema de archivos y montarlo. TYPE=$(ogGetFsType $1 $2) || return $? MNTDIR=$(ogMount $1 $2) || return $? diff --git a/client/engine/System.lib b/client/engine/System.lib index 5e1f4116..4c2b60a4 100755 --- a/client/engine/System.lib +++ b/client/engine/System.lib @@ -10,10 +10,10 @@ #/** -# ogEcho [loglevel] message... +# ogEcho [str_loglevel] "str_message..." #@brief Muestra mensajes en consola y lo registra en fichero de incidencias. -#@arg \c str_loglevel nivel de registro de incidencias. -#@arg \c str_message mensaje (puede recibir más de 1 parámetro. +#@param str_loglevel nivel de registro de incidencias. +#@param str_message mensaje (puede recibir más de 1 parámetro. #@return Mensaje mostrado. #@note El nivel de ayuda \c (help) no se registra en el fichero de incidencias. #@version 0.9 - Primera versión para OpenGNSys @@ -25,7 +25,7 @@ function ogEcho () { # Variables locales local LOGLEVEL LOGFILE DATETIME -#/// Selección del nivel de registro (opcional). +# Selección del nivel de registro (opcional). case "$1" in help) shift ;; info) LOGLEVEL=$1; shift ;; @@ -33,10 +33,9 @@ case "$1" in error) LOGLEVEL=$1; shift ;; *) ;; esac - -#/// Registro de incidencias. -#[ -w "$OGLOGFILE" ] && LOGFILE="-f $OGLOGFILE" -#DATETIME=$(date +"%F %T") # pendiente en cliente Initrd +# Pendiente en cliente Initrd. +#DATETIME=$(date +"%F %T") + if [ -n "$LOGLEVEL" ]; then logger -s -t "OpenGNSys $LOGLEVEL" $LOGFILE "$DATETIME $*" else @@ -47,15 +46,16 @@ fi ##### PRUEBAS # ogGetHostname -function ogGetHostname () { +function ogGetHostname () +{ local HOST -#/// Tomar nombre de la variable \c HOSTNAME +# Tomar nombre de la variable \c HOSTNAME HOST="$HOSTNAME" -#/// Si no, tomar del DHCP, opción \c host-name +# Si no, tomar del DHCP, opción \c host-name [ -z "$HOST" ] && HOST=$(awk -F\" '/option host-name/ {gsub(/;/,""); host=$2} END {print host} ' /var/lib/dhcp3/dhclient.leases) -#/// Si no, tomar del parámetro del kernel \c hostname +# Si no, tomar del parámetro del kernel \c hostname [ -z "$HOST" ] && HOST=$(awk 'BEGIN {RS=""; FS="="} $1~/hostname/ {print $2}' /proc/cmdline) [ "$HOSTNAME" != "$HOST" ] && export HOSTNAME="$HOST" @@ -63,7 +63,8 @@ echo $HOST } # ogGetIpAddress -function ogGetIpAddress () { +function ogGetIpAddress () +{ local IP IP=$(awk '/fixed-address/ {gsub(/;/,""); host=$2} END {print host} @@ -73,10 +74,10 @@ echo $IP; #/** -# ogRaiseError errcode ["errmessage" ...] +# ogRaiseError int_errcode ["str_errmessage" ...] #@brief Devuelve el mensaje y el código de error correspondiente. -#@arg \c int_errcode código de error. -#@arg \c str_errmessage mensajes complementarios de error. +#@param int_errcode código de error. +#@param str_errmessage mensajes complementarios de error. #@return Mensaje de error. #@warning No definidas #@note Mensajes internacionales del fichero de idiomas. @@ -89,7 +90,7 @@ function ogRaiseError () { # Variables locales local MSG CODE -#/// Obtener código y mensaje de error. +# Obtener código y mensaje de error. CODE=$1 case "$CODE" in $OG_ERR_FORMAT) MSG="$MSG_ERR_FORMAT \"$2\"" ;; @@ -102,7 +103,7 @@ case "$CODE" in *) MSG="$MSG_ERR_GENERIC"; CODE=$OG_ERR_GENERIC ;; esac -#/// Mostrar mensaje de error y salir con el código indicado. +# Mostrar mensaje de error y salir con el código indicado. ogEcho error "${FUNCNAME[1]}: $MSG" >&2 return $CODE } @@ -111,10 +112,10 @@ return $CODE #/** # ogHelp ["str_function" ["str_format" ["str_example" ... ]]] #@brief Muestra mensaje de ayuda para una función determinda. -#@arg \c str_function Nombre de la función. -#@arg \c str_format Formato de ejecución de la función. -#@arg \c str_example Ejemplo de ejecución de la función. -#@return Salida de ayuda. +#@param str_function Nombre de la función. +#@param str_format Formato de ejecución de la función. +#@param str_example Ejemplo de ejecución de la función. +#@return str_help - Salida de ayuda. #@note Si no se indican parámetros, la función se toma de la variable \c $FUNCNAME #@note La descripción de la función se toma de la variable compuesta por \c MSG_FUNC_$función incluida en el fichero de idiomas. #@note Pueden especificarse varios mensajes con ejemplos. @@ -127,12 +128,12 @@ function ogHelp () { # Variables locales. local FUNC MSG -#/// Mostrar función, descripción y formato. +# Mostrar función, descripción y formato. FUNC="${1:-${FUNCNAME[${#FUNCNAME[*]}-1]}}" MSG="MSG_HELP_$FUNC" ogEcho help "$MSG_FUNCTION $FUNC: ${!MSG}" [ -n "$2" ] && ogEcho help " $MSG_FORMAT: $2" -#/// Mostrar ejemplos (si existen). +# Mostrar ejemplos (si existen). shift 2 while [ $# -gt 0 ]; do ogEcho help " $MSG_EXAMPLE: $1" |