diff options
Diffstat (limited to 'client/engine')
-rwxr-xr-x | client/engine/Boot.lib | 204 | ||||
-rwxr-xr-x | client/engine/Disk.lib | 119 | ||||
-rwxr-xr-x | client/engine/File.lib | 55 | ||||
-rwxr-xr-x | client/engine/FileSystem.lib | 91 | ||||
-rwxr-xr-x | client/engine/Image.lib | 10 | ||||
-rwxr-xr-x | client/engine/Inventory.lib | 37 | ||||
-rwxr-xr-x | client/engine/Net.lib | 119 | ||||
-rwxr-xr-x | client/engine/PostConfEAC.lib | 141 | ||||
-rwxr-xr-x | client/engine/Protocol.lib | 35 | ||||
-rwxr-xr-x | client/engine/Registry.lib | 9 | ||||
-rwxr-xr-x | client/engine/System.lib | 26 | ||||
-rw-r--r-- | client/engine/correspondencia-api.txt | 227 |
12 files changed, 653 insertions, 420 deletions
diff --git a/client/engine/Boot.lib b/client/engine/Boot.lib index 8731580f..e21935ca 100755 --- a/client/engine/Boot.lib +++ b/client/engine/Boot.lib @@ -20,10 +20,10 @@ #@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 En Linux, debe arrancarse la partición del directorio \c /boot -#@version 0.1 - Integracion para OpenGNSys. - EAC: HDboot(); BootLinuxEX() en Boot.lib +#@version 0.1 - Integración para OpenGnSys. - EAC: HDboot; BootLinuxEX en Boot.lib #@author Antonio J. Doblas Viso, Universidad de Malaga #@date 2008-10-27 -#@version 0.9 - Adaptacion para OpenGNSys. +#@version 0.9 - Adaptación para OpenGnSys. #@author Ramon Gomez, ETSII Universidad de Sevilla #@date 2009-09-11 #*/ ## @@ -68,21 +68,19 @@ case "$TYPE" in [ -z "$LOADER" ] && ogRaiseError $OG_ERR_NOTOS && return $? # Activar la partición y copiar Grub4DOS. ogSetPartitionActive $1 $2 - #FIXME: activar seguimiento inicio sesion XP con grub4dos - #if `ogGetOsVersion $1 $2 | grep "XP" > /dev/null` - #then - # dd if=/dev/zero of=${MNTDIR}/ogboot.me bs=1024 count=3 - # dd if=/dev/zero of=${MNTDIR}/ogboot.firstboot bs=1024 count=3 - # dd if=/dev/zero of=${MNTDIR}/ogboot.secondboot bs=1024 count=3 - # ogLoadHiveWindows $1 $2 - # ogHiveNTRunMachine "cmd /c del c:\ogboot.* " ogcleanboot - # ogUpdateHiveWindows - # reboot - #else - cp $OGLIB/grub4dos/* $MNTDIR # */ (Comentario Doxygen) - ##kexec -l $MNTDIR/grub.exe --append=--config-file="find --set-root /$LOADER; chainloader /$LOADER; tpm --init" - kexec -l $MNTDIR/grub.exe --append=--config-file="root (hd$[$1-1],$[$2-1]); chainloader (hd$[$1-1],$[$2-1])/$LOADER; tpm --init" - #fi + #FIXME: activar seguimiento inicio sesion Windows con grub4dos + if [ "$(ogGetOsType $1 $2)" == "Windows" ]; then + dd if=/dev/zero of=${MNTDIR}/ogboot.me bs=1024 count=3 + dd if=/dev/zero of=${MNTDIR}/ogboot.firstboot bs=1024 count=3 + dd if=/dev/zero of=${MNTDIR}/ogboot.secondboot bs=1024 count=3 + ogLoadHiveWindows $1 $2 + ogHiveNTRunMachine "cmd /c del c:\ogboot.*" ogcleanboot + ogUpdateHiveWindows + reboot + else + cp $OGLIB/grub4dos/* $MNTDIR # */ (Comentario Doxygen) + kexec -l $MNTDIR/grub.exe --append=--config-file="root (hd$[$1-1],$[$2-1]); chainloader (hd$[$1-1],$[$2-1])/$LOADER; tpm --init" + fi ;; *) ogRaiseError $OG_ERR_PARTITION "$1, $2" return $? @@ -103,7 +101,7 @@ kexec -e #@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. -#@version 0.9 - Adaptación para OpenGNSys. +#@version 0.9 - Adaptación para OpenGnSys. #@author Ramon Gomez, ETSII Universidad de Sevilla #@date 2009-09-23 #*/ ## @@ -140,7 +138,7 @@ ogGetRegistryValue $MNTDIR system '\ControlSet001\Control\ComputerName\ComputerN #@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. #@warning Función básica usada por \c ogBoot -#@version 0.9 - Primera adaptación para OpenGNSys. +#@version 0.9 - Primera adaptación para OpenGnSys. #@author Ramon Gomez, ETSII Universidad de Sevilla #@date 2009-09-11 #@version 0.9.2 - Soporta partición /boot independiente. @@ -202,7 +200,7 @@ awk 'BEGIN {cont=-1;} #@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. -#@version 0.9 - Adaptación a OpenGNSys. +#@version 0.9 - Adaptación a OpenGnSys. #@author Ramon Gomez, ETSII Universidad de Sevilla #@date 2009-09-24 #*/ ## @@ -244,7 +242,7 @@ ogSetRegistryValue $MNTDIR system '\ControlSet001\services\Tcpip\Parameters\NV H #@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. -#@version 0.9.2 - Adaptación a OpenGNSys. +#@version 0.9.2 - Adaptación a OpenGnSys. #@author Ramon Gomez, ETSII Universidad de Sevilla #@date 2010-07-20 #*/ ## @@ -279,7 +277,7 @@ ogSetRegistryValue $MNTDIR SOFTWARE '\Microsoft\Windows NT\CurrentVersion\Winlog #@return salida del programa my-sys #@exception OG_ERR_FORMAT Formato incorrecto. #@exception OG_ERR_PARTITION Tipo de partición desconocido o no se puede montar. -#@version 0.9 - Adaptación a OpenGNSys. +#@version 0.9 - Adaptación a OpenGnSys. #@author Antonio J. Doblas Viso. Universidad de Málaga #@date 2009-09-24 #*/ ## @@ -311,7 +309,7 @@ ms-sys -m -f $PART #@return salida del programa my-sys #@exception OG_ERR_FORMAT Formato incorrecto. #@exception OG_ERR_NOTFOUND Tipo de partición desconocido o no se puede montar. -#@version 0.9 - Adaptación a OpenGNSys. +#@version 0.9 - Adaptación a OpenGnSys. #@author Antonio J. Doblas Viso. Universidad de Málaga #@date 2009-09-24 #*/ ## @@ -346,7 +344,7 @@ ms-sys -s -f $PART #@return #@exception OG_ERR_FORMAT Formato incorrecto. #@exception OG_ERR_PARTITION Tipo de partición desconocido o no se puede montar. -#@version 0.9 - Adaptación a OpenGNSys. +#@version 0.9 - Adaptación a OpenGnSys. #@author Antonio J. Doblas Viso. Universidad de Málaga #@date 2009-09-24 #*/ ## @@ -354,7 +352,7 @@ ms-sys -s -f $PART function ogFixBootSector () { # Variables locales. -local PART DISK FILE +local PARTYPE DISK PART FILE # Si se solicita, mostrar ayuda. if [ "$*" == "help" ]; then @@ -369,7 +367,7 @@ fi #TODO, solo si la particion existe #TODO, solo si es ntfs o fat PARTYPE=$(ogGetPartitionId $1 $2) -case $PARTYPE in +case "$PARTYPE" in 1|4|6|7|b|c|e|f) ;; *) @@ -382,15 +380,17 @@ ogUnmount $1 $2 || return $(ogRaiseError $OG_ERR_PARTITION; echo $?) #Preparando instruccion let DISK=$1-1 PART=$2 -FILE=/tmp/temporal +FILE=/tmp/temp$$ cat > $FILE <<EOF disk=$DISK main_part=$PART fix_first_sector=yes EOF -spartlnx.run -cui -nm -a -f $FILE - +spartlnx.run -cui -nm -a -f $FILE & +sleep 5 +ps aux > /dev/null | grep $! | grep -E "T|S" | kill -9 $! > /dev/null +rm -f $FILE } @@ -403,7 +403,7 @@ spartlnx.run -cui -nm -a -f $FILE #@return #@exception OG_ERR_FORMAT Formato incorrecto. #@exception OG_ERR_PARTITION Tipo de partición desconocido o no se puede montar. -#@version 0.9 - Integración desde EAC para OpenGNSys. +#@version 0.9 - Integración desde EAC para OpenGnSys. #@author Antonio J. Doblas Viso. Universidad de Málaga #@date 2009-09-24 #@version 1.0.1 - Adapatacion para OpenGnsys. @@ -415,11 +415,11 @@ spartlnx.run -cui -nm -a -f $FILE function ogWindowsBootParameters () { # Variables locales. -local PART DISK FILE +local PART DISK FILE VERSION WINVER MOUNT #Preparando variables adaptadas a sintaxis windows. let DISK=$1-1 PART=$2 -FILE=/tmp/temporal +FILE=/tmp/temp$$ # Si se solicita, mostrar ayuda. if [ "$*" == "help" ]; then @@ -462,7 +462,11 @@ disk=$DISK main_part=$PART boot_entry=Windows Resume Application EOF -spartlnx.run -cui -nm -w -f $FILE +spartlnx.run -cui -nm -w -f $FILE & +sleep 5 +ps aux > /dev/null | grep $! | grep -E "T|S" | kill -9 $! > /dev/null + + #Preparando instruccion tipo windows cat > $FILE <<EOF @@ -472,17 +476,23 @@ disk=$DISK main_part=$PART boot_entry=$WINVER EOF -spartlnx.run -cui -nm -w -f $FILE +spartlnx.run -cui -nm -w -f $FILE & +sleep 5 +ps aux > /dev/null | grep $! | grep -E "T|S" | kill -9 $! > /dev/null + ##Preparando instruccion Ramdisk Options -#cat > $FILE <<EOF -#boot_disk=$DISK -#boot_main_part=$PART -#disk=$DISK -#main_part=$PART -#boot_entry=Ramdisk Options -#EOF -#spartlnx.run -cui -nm -w -f $FILE +cat > $FILE <<EOF +boot_disk=$DISK +boot_main_part=$PART +disk=$DISK +main_part=$PART +boot_entry=Ramdisk Options +EOF +spartlnx.run -cui -nm -w -f $FILE & +sleep 5 +ps aux > /dev/null | grep $! | grep -E "T|S" | kill -9 $! > /dev/null + #Preparando instruccion Windows Boot Manager cat > $FILE <<EOF @@ -492,20 +502,25 @@ disk=$DISK main_part=$PART boot_entry=Windows Boot Manager EOF -spartlnx.run -cui -nm -w -f $FILE +spartlnx.run -cui -nm -w -f $FILE & +sleep 5 +ps aux > /dev/null | grep $! | grep -E "T|S" | kill -9 $! > /dev/null + #Preparando instruccion Herramienta de diagnóstico de memoria de Windows -#cat > $FILE <<EOF -#boot_disk=$DISK -#boot_main_part=$PART -#disk=$DISK -#main_part=$PART -#boot_entry=Herramienta de diagnóstico de memoria de Windows -#EOF -#spartlnx.run -cui -nm -w -f $FILE +cat > $FILE <<EOF +boot_disk=$DISK +boot_main_part=$PART +disk=$DISK +main_part=$PART +boot_entry=Herramienta de diagnóstico de memoria de Windows +EOF +spartlnx.run -cui -nm -w -f $FILE & +sleep 5 +ps aux > /dev/null | grep $! | grep -E "T|S" | kill -9 $! > /dev/null } - + # ogWindowsRegisterPartition int_ndisk int_partiton str_volume int_disk int_partition #@brief Registra una partición en windows con un determinado volumen. @@ -517,16 +532,14 @@ spartlnx.run -cui -nm -w -f $FILE #@return #@exception OG_ERR_FORMAT Formato incorrecto. #@exception OG_ERR_PARTITION Tipo de partición desconocido o no se puede montar. -#@version 0.9 - Adaptación a OpenGNSys. +#@version 0.9 - Adaptación a OpenGnSys. #@author Antonio J. Doblas Viso. Universidad de Málaga #@date 2009-09-24 #*/ ## - - function ogWindowsRegisterPartition () -{ +{ # Variables locales. -local PART DISK FILE +local PART DISK FILE REGISTREDDISK REGISTREDPART REGISTREDVOL VERSION SYSTEMROOT # Si se solicita, mostrar ayuda. if [ "$*" == "help" ]; then @@ -543,7 +556,7 @@ REGISTREDPART=$2 REGISTREDVOL=$(echo $3 | cut -c1 | tr '[:lower:]' '[:upper:]') DISK=$4 PART=$5 -FILE=/tmp/temporal +FILE=/tmp/temp$$ ogDiskToDev $REGISTREDDISK $REGISTREDPART || return $(ogRaiseError $OG_ERR_PARTITION "particion a registrar "; echo $?) ogDiskToDev $DISK $PART || return $(ogRaiseError $OG_ERR_PARTITION "particion de windows"; echo $?) @@ -577,5 +590,78 @@ main_part=$REGISTREDPART ;ext_part part_letter=$REGISTREDVOL EOF -spartlnx.run -cui -nm -u -f $FILE +spartlnx.run -cui -nm -u -f $FILE & +sleep 5 +ps aux > /dev/null | grep $! | grep -E "T|S" | kill -9 $! > /dev/null + } + + +# ogGrubInstallPartition int_disk int_partition +#@brief Instala/actualiza el gestro grub en el "boot sector" de la partición indicada +#@param int_disk +#@param indt_part +#@return +#@exception OG_ERR_FORMAT Formato incorrecto. +#@version 1.0.2 - Primeras pruebas. +#@author Antonio J. Doblas Viso. Universidad de Malaga. +#@date 2011-10-29 +#*/ ## + +function ogGrubInstallPartition { + +# Variables locales. +local PART DISK DIRCONF SCHROOTDEVICE + +# Si se solicita, mostrar ayuda. +if [ "$*" == "help" ]; then + ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk int_partition" \ + "$FUNCNAME 1 1 " + return +fi + +# Error si no se reciben 2 parámetros. +[ $# == 2 ] || return $(ogRaiseError $OG_ERR_FORMAT; echo $?) + +DISK=$1; PART=$2; DIRCONF="/etc/schroot" + + +VERSION=$(ogGetOsVersion $DISK $PART) +echo $VERSION | grep "Linux" || return $(ogRaiseError $OG_ERR_NOTOS "no es linux"; echo $?) + +SCHROOTLOCATION=$(ogMount $DISK $PART) +SCHROOTDEVICE=$(ogDiskToDev $DISK $PART) + +rm ${DIRCONF}/schroot.conf + +cat >> ${DIRCONF}/schroot.conf << EOF +[linux] +description=$VERSION +type=plain +directory=$SCHROOTLOCATION +EOF + +cat >> $SCHROOTLOCATION/root/installgrub.sh <<EOF +#!/bin/bash +grub-install --recheck --force $SCHROOTDEVICE +update-grub2 +EOF + +chmod 777 $SCHROOTLOCATION/root/installgrub.sh + +mount --bind /dev $SCHROOTLOCATION/dev +mount --bind /dev/pts $SCHROOTLOCATION/dev/pts +mount --bind /proc $SCHROOTLOCATION/proc +mount --bind /sys $SCHROOTLOCATION/sys + + +schroot -c linux -- /root/installgrub.sh + +rm $SCHROOTLOCATION/root/installgrub.sh + +umount $SCHROOTLOCATION/dev/pts +umount $SCHROOTLOCATION/dev +umount $SCHROOTLOCATION/proc +umount $SCHROOTLOCATION/sys +} + diff --git a/client/engine/Disk.lib b/client/engine/Disk.lib index f15f1e08..6b642b38 100755 --- a/client/engine/Disk.lib +++ b/client/engine/Disk.lib @@ -319,7 +319,7 @@ local DISK # Si se solicita, mostrar ayuda. if [ "$*" == "help" ]; then - ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk" \ "$FUNCNAME 1 => 244198584" + ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk" "$FUNCNAME 1 => 244198584" return fi # Error si no se recibe 1 parámetro. @@ -467,6 +467,59 @@ esac #/** +# ogGetPartitionType int_ndisk int_npartition +#@brief Muestra el tipo de una particion determinada. +#@see ogGetFsType +#*/ ## +function ogGetPartitionType () +{ +ogGetFsType "$@" +} + + +#/** +# ogHidePartition int_ndisk int_npartition +#@brief Oculta un apartición visible. +#@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 detectado (no es un dispositivo). +#@exception OG_ERR_PARTITION tipo de partición no reconocido. +#@version 1.0 - Versión en pruebas. +#@author Ramon Gomez, ETSII Universidad de Sevilla +#@date 2010/01/12 +#*/ ## +function ogHidePartition () +{ +# Variables locales. +local PART TYPE NEWTYPE +# Si se solicita, mostrar ayuda. +if [ "$*" == "help" ]; then + ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk int_npartition" \ + "$FUNCNAME 1 1" + return +fi +# Error si no se reciben 2 parámetros. +[ $# == 2 ] || ogRaiseError $OG_ERR_FORMAT || return $? +PART=$(ogDiskToDev "$1" "$2") || return $? + +# Obtener tipo de partición. +TYPE=$(ogGetPartitionType "$1" "$2") +case "$TYPE" in + NTFS) NEWTYPE="HNTFS" ;; + FAT32) NEWTYPE="HFAT32" ;; + FAT16) NEWTYPE="HFAT16" ;; + FAT12) NEWTYPE="HFAT12" ;; + *) ogRaiseError $OG_ERR_PARTITION "$TYPE" + return $? ;; +esac +# Cambiar tipo de partición. +ogSetPartitionId $1 $2 $NEWTYPE +} + + +#/** # ogListPartitions int_ndisk #@brief Lista las particiones definidas en un disco. #@param int_ndisk nº de orden del disco @@ -613,11 +666,52 @@ DISK="$(ogDiskToDev $1)" || return $? PART="$(ogDiskToDev $1 $2)" || return $? # Convertir tamaño en KB a sectores de 512 B. SIZE=$[$3*2] || ogRaiseError $OG_ERR_FORMAT || return $? -# Usar \c sfdisk para redefinir el tamaño. +# Redefinir el tamaño de la partición. sfdisk -f -uS -N$2 $DISK <<< ",$SIZE" &>/dev/null || ogRaiseError $OG_ERR_PARTITION "$1,$2" || return $? partprobe 2>/dev/null } +#/** +# ogUnhidePartition int_ndisk int_npartition +#@brief Hace visible una partición oculta. +#@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 detectado (no es un dispositivo). +#@exception OG_ERR_PARTITION tipo de partición no reconocido. +#@version 1.0 - Versión en pruebas. +#@author Ramon Gomez, ETSII Universidad de Sevilla +#@date 2010/01/12 +#*/ ## +function ogUnhidePartition () +{ +# Variables locales. +local PART TYPE NEWTYPE +# Si se solicita, mostrar ayuda. +if [ "$*" == "help" ]; then + ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk int_npartition" \ + "$FUNCNAME 1 1" + return +fi +# Error si no se reciben 2 parámetros. +[ $# == 2 ] || ogRaiseError $OG_ERR_FORMAT || return $? +PART=$(ogDiskToDev "$1" "$2") || return $? + +# Obtener tipo de partición. +TYPE=$(ogGetPartitionType "$1" "$2") +case "$TYPE" in + HNTFS) NEWTYPE="NTFS" ;; + HFAT32) NEWTYPE="FAT32" ;; + HFAT16) NEWTYPE="FAT16" ;; + HFAT12) NEWTYPE="FAT12" ;; + *) ogRaiseError $OG_ERR_PARTITION "$TYPE" + return $? ;; +esac +# Cambiar tipo de partición. +ogSetPartitionId $1 $2 $NEWTYPE +} + #/** # ogUpdatePartitionTable @@ -629,10 +723,10 @@ partprobe 2>/dev/null #@version 0.1 - Integracion para Opengnsys - EAC: UpdatePartitionTable() en ATA.lib #@author Antonio J. Doblas Viso. Universidad de Malaga #@date 27/10/2008 -#*/ - +#*/ ## function ogUpdatePartitionTable () { +local i for i in `ogDiskToDev` do partprobe $i @@ -641,10 +735,12 @@ done -#/** @function ogGetPartitionsNumber: @brief detecta el numero de particiones del disco duro indicado. -#@param int_numdisk (indentificado EAC del disco) -#@return devuelve el numero paritiones del disco duro indicado -#@warning Salidas de errores no determinada +#/** +# ogGetPartitionsNumber int_ndisk +#@brief Detecta el numero de particiones del disco duro indicado. +#@param int_ndisk nº de orden del disco +#@return Devuelve el numero paritiones del disco duro indicado +#@warning Salidas de errores no determinada #@attention Requisitos: parted #@note Notas sin especificar #@version 0.1 - Integracion para Opengnsys - EAC: DetectNumberPartition () en ATA.lib @@ -653,14 +749,15 @@ done #@version 1.0 - Uso de sfdisk Primera version para OpenGnSys #@author Ramon Gomez, ETSII Universidad de Sevilla #@date 2009/07/24 -#*/ -function ogGetPartitionsNumber () { +#*/ ## +function ogGetPartitionsNumber () +{ #local disco totalpart #disco=`ogDiskToDev $1` #totalpart=`parted $disco print | egrep ^" [0123456789] " -c` #echo $totalpart local DISK -#/// Contar el nº de veces que aparece el disco en su lista de particiones. +# Contar el nº de veces que aparece el disco en su lista de particiones. DISK=$(ogDiskToDev $1) 2>/dev/null sfdisk -l $DISK 2>/dev/null | grep -c "^$DISK" } diff --git a/client/engine/File.lib b/client/engine/File.lib index 52b48075..b04d2278 100755 --- a/client/engine/File.lib +++ b/client/engine/File.lib @@ -27,7 +27,7 @@ function ogCalculateChecksum () local FILE if [ "$*" == "help" ]; then ogHelp "$FUNCNAME" "$FUNCNAME [ str_repo | int_ndisk int_npartition ] path_filepath" \ - "$FUNCNAME REPO ubuntu.img ==> ef899299caf8b517ce36f1157a93d8bf" + "$FUNCNAME REPO ubuntu.img ==> ef899299caf8b517ce36f1157a93d8bf" return fi @@ -53,7 +53,7 @@ function ogCompareChecksumFiles () local ARGS SOURCE TARGET if [ "$*" == "help" ]; then ogHelp "$FUNCNAME" "$FUNCNAME [ str_repo | int_ndisk int_npartition ] path_filepath" \ - "if $FUNCNAME REPO ubuntu.img CACHE ubuntu.img; then ... fi" + "if $FUNCNAME REPO ubuntu.img CACHE ubuntu.img; then ...; fi" return fi @@ -89,25 +89,30 @@ function ogCopyFile () { # Variables locales. local ARGS SOURCE TARGET +if [ "$*" == "help" ]; then + ogHelp "$FUNCNAME" "$FUNCNAME [ str_repo | int_ndisk int_npartition ] path_source [ str_repo | int_ndisk int_npartition ] path_target" \ + "$FUNCNAME REPO newfile.txt 1 2 /tmp/newfile.txt" + return +fi ARGS="$@" case "$1" in /*) # Camino completo. */ (Comentrio Doxygen) - SOURCE=$(ogGetPath "$1") + SOURCE="$(ogGetPath "$1")" shift ;; [1-9]*) # ndisco npartición. - SOURCE=$(ogGetPath "$1" "$2" "$3") + SOURCE="$(ogGetPath "$1" "$2" "$3")" shift 3 ;; *) # Otros: repo, cache, cdrom (no se permiten caminos relativos). - SOURCE=$(ogGetPath "$1" "$2") + SOURCE="$(ogGetPath "$1" "$2")" shift 2 ;; esac # Comprobar fichero origen y directorio destino. [ -n "$SOURCE" ] || ogRaiseError $OG_ERR_NOTFOUND "${ARGS% $*}" || return $? -TARGET=$(ogGetPath "$@") +TARGET="$(ogGetPath "$@")" [ -n "$TARGET" ] || ogRaiseError $OG_ERR_NOTFOUND "$@" || return $? # Copiar fichero. -cp -p "$SOURCE" "$TARGET" # (definir posible error) +cp -a "$SOURCE" "$TARGET" # (definir posible error) } @@ -123,8 +128,14 @@ function ogDeleteFile () { # Variables locales. local FILE +if [ "$*" == "help" ]; then + ogHelp "$FUNCNAME" "$FUNCNAME [ str_repo | int_ndisk int_npartition ] path_file" \ + "$FUNCNAME 1 2 /tmp/newfile.txt" + return +fi + # Comprobar que existe el fichero y borrarlo. -FILE=$(ogGetPath "$@") +FILE="$(ogGetPath "$@")" [ -n "$FILE" ] || ogRaiseError $OG_ERR_NOTFOUND "$*" || return $? rm -f "$FILE" || ogRaiseError $OG_ERR_NOTFOUND "$*" || return $? } @@ -142,8 +153,14 @@ function ogDeleteTree () { # Variables locales. local DIR +if [ "$*" == "help" ]; then + ogHelp "$FUNCNAME" "$FUNCNAME [ str_repo | int_ndisk int_npartition ] path_dir" \ + "$FUNCNAME 1 2 /tmp/newdir" + return +fi + # Comprobar que existe el directorio y borrarlo con su contenido. -DIR=$(ogGetPath "$@") +DIR="$(ogGetPath "$@")" [ -n "$DIR" ] || ogRaiseError $OG_ERR_NOTFOUND "$*" || return $? rm -fr "$DIR" || ogRaiseError $OG_ERR_NOTFOUND "$*" || return $? } @@ -245,7 +262,7 @@ if [ "$*" == "help" ]; then fi 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 @@ -282,13 +299,13 @@ fi ARGS="$@" case "$1" in /*) # Camino completo. */ (Comentrio Doxygen) - SOURCE=$(ogGetPath "$1") + SOURCE="$(ogGetPath "$1")" shift ;; [1-9]*) # ndisco npartición. - SOURCE=$(ogGetPath "$1" "$2" "$3") + SOURCE="$(ogGetPath "$1" "$2" "$3")" shift 3 ;; *) # Otros: repo, cache, cdrom (no se permiten caminos relativos). - SOURCE=$(ogGetPath "$1" "$2") + SOURCE="$(ogGetPath "$1" "$2")" shift 2 ;; esac # Comprobar que existen los ficheros origen y destino. @@ -312,7 +329,7 @@ test "$SOURCE" -nt "$TARGET" function ogMakeChecksumFile () { # Variables locales. -local FILE DATA +local FILE if [ "$*" == "help" ]; then ogHelp "$FUNCNAME" "$FUNCNAME [ str_repo | int_ndisk int_npartition ] path_filepath" \ "$FUNCNAME REPO ubuntu.img" @@ -320,7 +337,7 @@ if [ "$*" == "help" ]; then fi # Comprobar que existe el fichero y guardar su checksum. -FILE=$(ogGetPath "$@") +FILE="$(ogGetPath "$@")" [ -n "$FILE" ] || ogRaiseError $OG_ERR_NOTFOUND "$*" || return $? ogCalculateChecksum "$FILE" > "$FILE.sum" } @@ -342,7 +359,13 @@ ogCalculateChecksum "$FILE" > "$FILE.sum" function ogMakeDir () { local PARENT DIR -PARENT=$(ogGetParentPath "$@") || return $? +if [ "$*" == "help" ]; then + ogHelp "$FUNCNAME" "$FUNCNAME [ str_repo | int_ndisk int_npartition ] path_dir" \ + "$FUNCNAME 1 2 /tmp/newdir" + return +fi + +PARENT="$(ogGetParentPath "$@")" || return $? DIR="$(basename "${!#}")" mkdir -p "$PARENT/$DIR" || ogRaiseError $OG_ERR_NOTFOUND "$*" || return $? } diff --git a/client/engine/FileSystem.lib b/client/engine/FileSystem.lib index ca4486b0..5c69e089 100755 --- a/client/engine/FileSystem.lib +++ b/client/engine/FileSystem.lib @@ -21,34 +21,44 @@ #@note Requisitos: *fsck* #@warning No se comprueban sistemas de archivos montados o bloqueados. #@todo Definir salidas. -#@version 0.9 - Primera adaptación para OpenGNSys. +#@version 0.9 - Primera adaptación para OpenGnSys. #@author Ramon Gomez, ETSII Universidad de Sevilla #@date 2009-10-07 +#@version 1.0.2 - Ignorar códigos de salida de comprobación (no erróneos). +#@author Ramon Gomez, ETSII Universidad de Sevilla +#@date 2011-09-23 #*/ function ogCheckFs () { # Variables locales. -local PART TYPE PROG PARAMS +local PART TYPE PROG PARAMS CODES ERRCODE +# Si se solicita, mostrar ayuda. +if [ "$*" == "help" ]; then + ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk int_npartition" \ + "$FUNCNAME 1 1" + return +fi -#/// Error si no se reciben 2 parámetros. +# Error si no se reciben 2 parámetros. [ $# == 2 ] || ogRaiseError $OG_ERR_FORMAT || return $? -#/// Obtener partición. +# Obtener partición. PART="$(ogDiskToDev $1 $2)" || return $? TYPE=$(ogGetFsType $1 $2) case "$TYPE" in - EXT[234]) PROG="e2fsck" ;; - REISERFS) PROG="reiserfsck"; PARAMS="<<<\"Yes\"" ;; - JFS) PROG="fsck.jfs" ;; + EXT[234]) PROG="e2fsck"; PARAMS="-y"; CODES=(1 2) ;; + REISERFS) PROG="fsck.reiserfs"; PARAMS="<<<\"Yes\""; CODES=(1 2) ;; + REISER4) PROG="fsck.reiser4"; PARAMS="-ay" ;; + JFS) PROG="fsck.jfs"; CODES=(1 2) ;; XFS) PROG="fsck.xfs" ;; NTFS|HNTFS) PROG="ntfsfix" ;; - FAT32|HFAT32) PROG="dosfsck"; PARAMS="-a" ;; - FAT16|HFAT16) PROG="dosfsck"; PARAMS="-a" ;; - FAT12|HFAT12) PROG="dosfsck"; PARAMS="-a" ;; + FAT32|HFAT32) PROG="dosfsck"; PARAMS="-a"; CODES=1 ;; + FAT16|HFAT16) PROG="dosfsck"; PARAMS="-a"; CODES=1 ;; + FAT12|HFAT12) PROG="dosfsck"; PARAMS="-a"; CODES=1 ;; *) ogRaiseError $OG_ERR_PARTITION "$1, $2, $TYPE" - return $? ;; + return $? ;; esac -#/// Error si el sistema de archivos esta montado o bloqueado. +# Error si el sistema de archivos esta montado o bloqueado. if ogIsMounted $1 $2; then ogRaiseError $OG_ERR_PARTITION "$1 $2" # Indicar nuevo error return $? @@ -57,14 +67,17 @@ if ogIsLocked $1 $2; then ogRaiseError $OG_ERR_LOCKED "$1 $2" return $? fi -#/// Comprobar en modo uso exclusivo. +# Comprobar en modo uso exclusivo. ogLock $1 $2 eval $PROG $PARAMS $PART ERRCODE=$? case $ERRCODE in - 0) ;; - 127) ogRaiseError $OG_ERR_NOTEXEC "$PROG" ;; - *) ogRaiseError $OG_ERR_PARTITION "$1 $2" ;; + 0|${CODES[*]}) + ERRCODE=0 ;; + 127) ogRaiseError $OG_ERR_NOTEXEC "$PROG" + ERRCODE=$OG_ERR_NOTEXEC ;; + *) ogRaiseError $OG_ERR_PARTITION "$1 $2" + ERRCODE=$OG_ERR_PARTITION ;; esac ogUnlock $1 $2 return $ERRCODE @@ -91,22 +104,22 @@ return $ERRCODE function ogExtendFs () { # Variables locales. -local PART PROG PARAMS +local PART TYPE PROG PARAMS ERRCODE -#/// Si se solicita, mostrar ayuda. +# Si se solicita, mostrar ayuda. if [ "$*" == "help" ]; then ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk int_npartition" \ "$FUNCNAME 1 1" return fi -#/// Error si no se reciben 2 parámetros. +# Error si no se reciben 2 parámetros. [ $# == 2 ] || ogRaiseError $OG_ERR_FORMAT || return $? -#/// Obtener partición. +# Obtener partición. PART="$(ogDiskToDev $1 $2)" || return $? ogUnmount $1 $2 2>/dev/null -#/// Redimensionar al tamano máximo según el tipo de partición. +# Redimensionar al tamano máximo según el tipo de partición. TYPE=$(ogGetFsType $1 $2) case "$TYPE" in EXT[234]) PROG="resize2fs"; PARAMS="-f" ;; @@ -115,7 +128,7 @@ case "$TYPE" in *) ogRaiseError $OG_ERR_PARTITION "$1 $2 $TYPE" return $? ;; esac -#/// Error si el sistema de archivos está montado o bloqueado. +# Error si el sistema de archivos está montado o bloqueado. if ogIsMounted $1 $2; then ogRaiseError $OG_ERR_PARTITION "$1 $2" # Indicar nuevo error return $? @@ -124,14 +137,16 @@ if ogIsLocked $1 $2; then ogRaiseError $OG_ERR_LOCKED "$1 $2" return $? fi -#/// Redimensionar en modo uso exclusivo. +# Redimensionar en modo uso exclusivo. ogLock $1 $2 eval $PROG $PARAMS $PART &>/dev/null ERRCODE=$? case $ERRCODE in 0) ;; - 127) ogRaiseError $OG_ERR_NOTEXEC "$PROG" ;; - *) ogRaiseError $OG_ERR_PARTITION "$1 $2" ;; + 127) ogRaiseError $OG_ERR_NOTEXEC "$PROG" + ERRCODE=$OG_ERR_NOTEXEC ;; + *) ogRaiseError $OG_ERR_PARTITION "$1 $2" + ERRCODE=$OG_ERR_PARTITION ;; esac ogUnlock $1 $2 return $ERRCODE @@ -217,7 +232,8 @@ if [ -z "$PROG" ]; then REISERFS) PROG="mkfs.reiserfs"; PARAMS="-f" ;; REISER4) PROG="mkfs.reiser4";; XFS) PROG="mkfs.xfs"; PARAMS="-f" ;; - JFS) PROG="mkfs.jfs"; PARAMS="<<<\"y\"";; + JFS) PROG="mkfs.jfs"; PARAMS="<<<\"y\"" ;; + LINUX-SWAP) PROG="mkswap" ;; NTFS|HNTFS) PROG="mkntfs"; PARAMS="-f" ;; FAT32|HFAT32) PROG="mkdosfs"; PARAMS="-F 32" ;; FAT16|HFAT16) PROG="mkdosfs"; PARAMS="-F 16" ;; @@ -278,11 +294,10 @@ return $ERRCODE #@author Ramon Gomez, ETSII Universidad de Sevilla #@date 2009-07-21 #*/ ## -function ogGetFsType () { - +function ogGetFsType () +{ # Variables locales. -local ID TYPE - +local DISK ID TYPE # Si se solicita, mostrar ayuda. if [ "$*" == "help" ]; then ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk int_npartition" \ @@ -326,7 +341,7 @@ case "$ID" in fd) TYPE="LINUX-RAID" ;; *) TYPE="UNKNOWN" ;; esac -echo $TYPE +echo "$TYPE" } @@ -591,13 +606,8 @@ if [ -z "$MNTDIR" ]; then $MOUNT $PARAMS $PART $MNTDIR 2>/dev/null || \ $MOUNT $PARAMS $PART $MNTDIR -o force,remove_hiberfile 2>/dev/null || \ ogRaiseError $OG_ERR_PARTITION "$1, $2, $TYPE" || return $? - # linea temporal durante desarrollo para poder usar el cliente completo nfs y testeas nuevas herramientas. - if grep -q nfsroot /proc/cmdline; then - echo "$PART $MNTDIR" >> /etc/mtab - fi - # fin linea temporal. fi -echo $MNTDIR +echo "$MNTDIR" } @@ -688,8 +698,6 @@ case "$(ogGetFsType $1 $2)" in *) ogRaiseError $OG_ERR_PARTITION "$1,$2" return $? ;; esac -#/// Mostrar nuevo tamaño en KB. -#echo $[SIZE*1024] ogGetFsSize $1 $2 } @@ -847,11 +855,6 @@ if [ -n "$MNTDIR" ]; then # Desmontar y borrar punto de montaje. umount $PART 2>/dev/null || ogEcho warning "$FUNCNAME: $MSG_DONTUNMOUNT: \"$1, $2\"" rmdir $MNTDIR 2>/dev/null || rm -f $MNTDIR 2>/dev/null - # linea temporal durante desarrollo para testear nuevas herramientas con el cliente completo nfs - if grep -q nfsroot /proc/cmdline; then - grep -v $PART /etc/mtab > /var/tmp/mtab.temporal && cp /var/tmp/mtab.temporal /var/tmp/mtab && rm /var/tmp/mtab.temporal - fi - # fin linea temporal. else ogEcho warning "$MSG_DONTMOUNT: \"$1,$2\"" fi diff --git a/client/engine/Image.lib b/client/engine/Image.lib index a4b82b02..0a0867f2 100755 --- a/client/engine/Image.lib +++ b/client/engine/Image.lib @@ -14,7 +14,7 @@ function ogPartcloneSyntax () { #TODO: comprobar como unico parametro particion /dev/sda1 #COMPAR="partclone.$FS --clone --force --source $PART" -COMPAR="-F -c -s " +COMPAR=" -d0 -F -c -s " TYPE="$(ogGetFsType `ogDevToDisk $1`)" case "$TYPE" in EXT[234]) @@ -210,7 +210,7 @@ if [ "$#" -eq 4 ]; then ;; "partclone" | "PARTCLONE") # -C para que no compruebe tamaños - TOOL="| partclone.restore -o $PART" + TOOL="| partclone.restore -d0 -C -I -o $PART" ;; *) ogRaiseError $OG_ERR_NOTFOUND "Tools imaging no valid $TOOL" || return $? @@ -382,6 +382,7 @@ IMGFILE="$IMGDIR/$(basename "$3").mbr" dd if="$DISK" of="$IMGFILE" bs=446 count=1 || ogRaiseError $OG_ERR_IMAGE "$1 $IMGFILE" || return $? } + #/** # ogIsImageLocked [str_repo] path_image #@brief Comprueba si una imagen está bloqueada para uso exclusivo. @@ -481,7 +482,7 @@ touch $IMGDIR/$(basename "${!#}").lock function ogRestoreImage () { # Variables locales -local PART PARTSIZE IMGFILE IMGTYPE IMGSIZE FSTYPE +local PART PARTSIZE IMGFILE IMGTYPE IMGSIZE FSTYPE PROGRAM ERRCODE # Si se solicita, mostrar ayuda. if [ "$*" == "help" ]; then @@ -662,7 +663,8 @@ rm -f $(ogGetPath $@.lock) #@date 2010/02/08 #*/ ## -function ogGetImageInfo () { +function ogGetImageInfo () +{ # Si se solicita, mostrar ayuda. if [ "$*" == "help" ]; then ogHelp "$FUNCNAME" "$FUNCNAME filename " \ diff --git a/client/engine/Inventory.lib b/client/engine/Inventory.lib index 47ffd83d..b610639e 100755 --- a/client/engine/Inventory.lib +++ b/client/engine/Inventory.lib @@ -17,8 +17,14 @@ #@author Ramon Gomez, ETSII Universidad de Sevilla #@date 2010-07-17 #*/ -function ogGetArch () { -[ -d /lib64 ] && echo x86_64 || echo i386 +function ogGetArch () +{ +if [ "$*" == "help" ]; then + ogHelp "$FUNCNAME" "$FUNCNAME" "$FUNCNAME => x86_64" + return +fi + +[ -d /lib64 ] && echo "x86_64" || echo "i386" } @@ -41,10 +47,10 @@ function ogGetOsVersion () { # Variables locales. local MNTDIR TYPE DISTRIB VERSION FILE - # Si se solicita, mostrar ayuda. if [ "$*" == "help" ]; then - ogHelp "$FUNCNAME" "$FUNCNAME" + ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk int_npartition" \ + "$FUNCNAME 1 2 => Linux:Ubuntu 11.04 64 bits" return fi # Error si no se reciben 2 parametros. @@ -72,7 +78,7 @@ case "$(ogGetFsType $1 $2)" in fi [ -e $MNTDIR/lib64 ] && VERSION="$VERSION 64 bits" ;; - NTFS | HTNFS | FAT32 | HFAT32) + NTFS | HNTFS | FAT32 | HFAT32) TYPE="Windows" # Para Windows: leer la version del registro. VERSION=$(ogGetRegistryValue $MNTDIR software '\Microsoft\Windows NT\CurrentVersion\ProductName') @@ -96,6 +102,12 @@ return 0 #*/ ## function ogGetOsType () { +# Si se solicita, mostrar ayuda. +if [ "$*" == "help" ]; then + ogHelp "$FUNCNAME" "$FUNCNAME int_ndisk int_npartition" \ + "$FUNCNAME 1 2 => Linux" + return +fi ogGetOsVersion "$@" | cut -sf1 -d: } @@ -168,7 +180,7 @@ lshw | awk 'BEGIN {type="mod";} function ogListSoftware () { # Variables locales. -local MNTDIR TYPE DPKGDIR RPMDIR KEYS k PROG VERS +local MNTDIR TYPE DPKGDIR RPMDIR PACMANDIR KEYS KEYS32 k PROG VERS # Si se solicita, mostrar ayuda. if [ "$*" == "help" ]; then @@ -228,6 +240,7 @@ case "$TYPE" in NTFS|HNTFS|FAT32|HFAT32) # Claves de registro para programas instalados: formato "{clave}". KEYS=$(ogListRegistryKeys $MNTDIR software '\Microsoft\Windows\CurrentVersion\Uninstall') + KEYS32=$(ogListRegistryKeys $MNTDIR software '\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall') # Mostrar los valores "DisplayName" y "DisplayVersion" para cada clave. (for k in $KEYS; do PROG=$(ogGetRegistryValue $MNTDIR software "\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\$k\\DisplayName") @@ -235,6 +248,13 @@ case "$TYPE" in VERS=$(ogGetRegistryValue $MNTDIR software "\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\$k\\DisplayVersion") echo "$PROG $VERS" fi + done + for k in $KEYS32; do + PROG=$(ogGetRegistryValue $MNTDIR software "\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\$k\\DisplayName") + if [ -n "$PROG" ]; then + VERS=$(ogGetRegistryValue $MNTDIR software "\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\$k\\DisplayVersion") + echo "$PROG $VERS" + fi done) | sort | uniq ;; *) ogRaiseError $OG_ERR_PARTITION "$1, $2" @@ -250,7 +270,9 @@ esac #@attention #@version 0.1 Date: 27/10/2008 Author Antonio J. Doblas Viso. Universidad de Malaga #*/ -function ogInfoCache () { +function ogInfoCache () +{ +local info infoFilesystem infoSize infoUsed infoUsedPorcet infoMountedOn content if ogMountCache then info=`df -h | grep $OGCAC` @@ -282,3 +304,4 @@ else fi } + diff --git a/client/engine/Net.lib b/client/engine/Net.lib index 6ac5a94a..b7534e20 100755 --- a/client/engine/Net.lib +++ b/client/engine/Net.lib @@ -4,12 +4,65 @@ #@brief Librería o clase Net #@class Net #@brief Funciones básicas de red. -#@version 0.10 +#@version 1.0.2 #@warning License: GNU GPLv3+ #*/ #/** +# ogGetGroupDir [ str_repo ] +#@brief Devuelve el cmaino del directorio para el grupo del cliente. +#@param str_repo repositorio de imágenes (opcional) +#@return path_dir - Camino al directorio del grupo. +#@note repo = { REPO, CACHE } REPO por defecto +#@exception OG_ERR_FORMAT formato incorrecto. +#@version 1.0.2 - Primera versión para OpenGnSys. +#@author Ramon Gomez, ETSII Universidad de Sevilla +#@date 2011-10-03 +#*/ +function ogGetGroupDir () +{ +local REPO DIR GROUP +if [ "$*" == "help" ]; then + ogHelp "$FUNCNAME" "$FUNCNAME str_repo" \ + "$FUNCNAME REPO ==> /opt/opengnsys/images/groups/Grupo1" + return +fi +# Error si se recibe más de 1 parámetro. +case $# in + 0) REPO="REPO" ;; + 1) REPO="$1" ;; + *) ogRaiseError $OG_ERR_FORMAT "$*" + return $? ;; +esac + +GROUP="$(ogGetGroupName)" +if [ -n "$GROUP" ]; then + DIR=$(ogGetPath "$REPO" "/groups/$GROUP" 2>/dev/null) + [ -d "$DIR" ] && echo "$DIR" +fi +} + + +#/** +# ogGetGroupName +#@brief Devuelve el nombre del grupo al que pertenece el cliente. +#@return str_group - Nombre de grupo. +#@version 1.0.2 - Primera versión para OpenGnSys. +#@author Ramon Gomez, ETSII Universidad de Sevilla +#@date 2011-10-03 +#*/ +function ogGetGroupName () +{ +if [ "$*" == "help" ]; then + ogHelp "$FUNCNAME" "$FUNCNAME" "$FUNCNAME => Grupo1" + return +fi +[ -n "$group" ] && echo "$group" +} + + +#/** # ogGetHostname #@brief Muestra el nombre del cliente. #@return str_host - nombre de máquina @@ -20,6 +73,10 @@ function ogGetHostname () { local HOST +if [ "$*" == "help" ]; then + ogHelp "$FUNCNAME" "$FUNCNAME" "$FUNCNAME => pc1" + return +fi # Tomar nombre de la variable HOSTNAME HOST="$HOSTNAME" # Si no, tomar del DHCP, opción host-name /* (comentario para Doxygen) @@ -30,14 +87,14 @@ HOST="$HOSTNAME" [ -z "$HOST" ] && HOST=$(awk 'BEGIN {RS=""; FS="="} $1~/hostname/ {print $2}' /proc/cmdline) [ "$HOSTNAME" != "$HOST" ] && export HOSTNAME="$HOST" -echo $HOST +[ -n "$HOST" ] && echo $HOST } #/** # ogGetNetInterface #@brief Muestra la interfaz de red del sistema -#@return str_interfaz - interfaz de red +#@return str_interface - interfaz de red #@version 1.0 - Integración OpenGnSys 0.10 Opengnsys 0.10-testing #@note Usa las variables utilizadas por el initrd "/etc/net-ethX.conf #@author Antonio J. Doblas Viso. Universidad de Malaga. @@ -45,13 +102,14 @@ echo $HOST #*/ ## function ogGetNetInterface () { - echo $DEVICE - +if [ "$*" == "help" ]; then + ogHelp "$FUNCNAME" "$FUNCNAME" "$FUNCNAME => eth0" + return +fi +[ -n "$DEVICE" ] && echo "$DEVICE" } - - #/** # ogGetIpAddress #@brief Muestra la dirección IP del sistema @@ -63,19 +121,29 @@ function ogGetNetInterface () #@note Usa las variables utilizadas por el initrd "/etc/net-ethX.conf #@author Antonio J. Doblas Viso. Universidad de Malaga. #@date 2011-02-24 +#@version 1.0.2 - Soporte para varias tarjetas de red +#@author Ramon Gomez, ETSII Universidad de Sevilla +#@date 2011-06-17 #*/ ## function ogGetIpAddress () { local IP -if [ -n $IPV4ADDR ] -then - echo $IPV4ADDR +if [ "$*" == "help" ]; then + ogHelp "$FUNCNAME" "$FUNCNAME" "$FUNCNAME => 192.168.0.10" + return +fi +if [ -n $IPV4ADDR ]; then + IP=$IPV4ADDR else - # Obtener direcciones IP. /* (comentario para Doxygen) - IP=$(ip address show | awk '$2!~/lo/ { readline; if ($1~/inet$/) {sub (/\/.*/, ""); printf ("%s ", $2)}}') - # Mostrar sólo la primera. (comentario para Doxygen) */ - echo ${IP%% *} + # Obtener direcciones IP. + if [ -n "$DEVICE" ]; then + IP=$(ip -o address show up dev "$DEVICE" 2>/dev/null | awk '{if ($3~/inet$/) {printf ("%s ", $4)}}') + else + IP=$(ip -o address show up | awk '$2!~/lo/ {if ($3~/inet$/) {printf ("%s ", $4)}}') + fi fi +# Mostrar solo la primera. +echo ${IP%%/*} # (comentario para Doxygen) */ } @@ -86,12 +154,23 @@ fi #@version 0.10 - Integración en OpenGnSys 0.10 #@author Ramon Gomez, ETSII Universidad de Sevilla #@date 2010-02-11 +#@version 1.0.2 - Soporte para varias tarjetas de red +#@author Ramon Gomez, ETSII Universidad de Sevilla +#@date 2011-06-17 #*/ ## function ogGetMacAddress () { local MAC +if [ "$*" == "help" ]; then + ogHelp "$FUNCNAME" "$FUNCNAME" "$FUNCNAME => 00:11:22:33:44:55" + return +fi # Obtener direcciones Ethernet. -MAC=$(ip address show | awk '$2!~/lo/ {readline; if ($1~/ether/) printf ("%s ", toupper($2));}') +if [ -n "$DEVICE" ]; then + MAC=$(ip -o address show up dev "$DEVICE" 2>/dev/null | awk '{sub (/.*\\/, ""); if ($1~/ether/) printf ("%s ", toupper($2));}') +else + MAC=$(ip -o address show up | awk '$2!~/lo/ {sub (/.*\\/, ""); if ($1~/ether/) printf ("%s ", toupper($2));}') +fi # Mostrar sólo la primera. echo ${MAC%% *} } @@ -111,6 +190,10 @@ echo ${MAC%% *} #*/ ## function ogGetRepoIp () { +if [ "$*" == "help" ]; then + ogHelp "$FUNCNAME" "$FUNCNAME" "$FUNCNAME => 192.168.0.2" + return +fi # Obtener direcciones IP, segun el protocolo de montaje if [ -n "$OGIMG" ]; then case "$ogprotocol" in @@ -135,8 +218,12 @@ fi #*/ ## function ogGetServerIp () { +if [ "$*" == "help" ]; then + ogHelp "$FUNCNAME" "$FUNCNAME" "$FUNCNAME => 192.168.0.2" + return +fi # Obtener direcciones IP. -if [ -n "$PENGNSYS" ]; then +if [ -n "$OPENGNSYS" ]; then case "$ogprotocol" in nfs) mount | grep " on $OPENGNSYS " | cut -f1 -d: ;; smb) mount | grep " on $OPENGNSYS " | cut -f3 -d/ ;; diff --git a/client/engine/PostConfEAC.lib b/client/engine/PostConfEAC.lib index 642b9118..f2487919 100755 --- a/client/engine/PostConfEAC.lib +++ b/client/engine/PostConfEAC.lib @@ -573,3 +573,144 @@ schroot -c linux schroot -end-sessiona --all-sessions } +#################################################################################### +################### Funciones para postconfiguracion windows ####################### +############# 2011 Jonathan Alonso Martinez jonathan.alonso@uab.cat ############### +#################### Universidad Autonoma de Barcelona (Spain)###################### +#################################################################################### + +#/** +# ogInstallMiniSetup path_mountpoint str_filename +#@brief Crea unas claves del registro y el archivo cmd que se ejecutara en el primer arranque estando la maquina en un estado bloqueado +#@param path_mountpoint directorio donde está montado el sistema Windows +#@param str_filename nombre del archivo .cmd a ejecutar en el arranque (estara en system32 y sera visible por el sistema) +#@return (nada) +#@exception OG_ERR_FORMAT Formato incorrecto. +#@version 1.0.2 - Nueva función +#@author Jonathan Alonso Martinez - Universidad Autonoma de Barcelona +#@date 2011-06-29 +#*/ ## +function ogInstallMiniSetup () +{ +local CMDDIR CMDFILE +# Si se solicita, mostrar ayuda. +if [ "$*" == "help" ]; then + ogHelp "$FUNCNAME" "$FUNCNAME path_mountpoint str_filename" \ + "$FUNCNAME /mnt/sda1 filename.cmd" + return +fi +# Error si no se reciben 2 parámetros. +[ $# == 2 ] || return $(ogRaiseError $OG_ERR_FORMAT; echo $?) +# Comprobar que existe el directorio del fichero de comandos. +CMDDIR=$(ogGetPath "$1/windows/system32") +[ -n "$CMDDIR" ] || ogRaiseError $OG_ERR_NOTFOUND "$1/windows/system32" || return $? +CMDFILE="$CMDDIR/$2" + +# Creamos el archivo cmd y creamos un par de comandos para que una vez acabe la +# postconfiguracion resetee el mini setup, sino lo haria en cada arranque. +cat > "$CMDFILE" << EOF +REG ADD HKLM\System\Setup /v SystemSetupInProgress /t REG_DWORD /d 0 /f +REG ADD HKLM\System\Setup /v CmdLine /t REG_SZ /d "" /f +EOF + +#Creamos las claves de registro necesarias para que se haga la ejecucion del .cmd al aranque +ogSetRegistryValue "$1" SYSTEM "\Setup\SystemSetupInProgress" 1 +ogSetRegistryValue "$1" SYSTEM "\Setup\SetupType" 4 +ogSetRegistryValue "$1" SYSTEM "\Setup\CmdLine" "cmd.exe /c $2" +} + + +# ogAddCmd path_mountpoint str_filename str_commands +#@brief Añade comandos al cmd creado por ogInstalMiniSetup +#@param path_mountpoint directorio donde está montado el sistema Windows +#@param str_filename nombre del fichero cmd (siempre se guardara en windows\system32\para que sea visible por el sistema +#@param str_commands comando o comandos que se añadiran al fichero +#@return +#@exception OG_ERR_FORMAT Formato incorrecto. +#@exception OG_ERR_PARTITION Tipo de partición desconocido o no se puede montar. +#@version 1.0.2 - Nueva función +#@author Jonathan Alonso Martinez - Universidad Autonoma de Barcelona +#@date 2011-06-29 +#*/ ## + +function ogAddCmd () +{ +local CMDFILE +# Si se solicita, mostrar ayuda. +if [ "$*" == "help" ]; then + ogHelp "$FUNCNAME" "$FUNCNAME path_mountpoint str_filename str_commands" \ + "$FUNCNAME /mnt/sda1 filename.cmd command" + return +fi +# Error si no se reciben 3 parámetros. +[ $# == 3 ] || return $(ogRaiseError $OG_ERR_FORMAT; echo $?) +# Comprobar que existe el fichero de comandos. +CMDFILE=$(ogGetPath "$1/windows/system32/$2") +[ -n "$CMDFILE" ] || ogRaiseError $OG_ERR_NOTFOUND "$1/windows/system32/$2" || return $? + +cat >> "$CMDFILE" << EOF +$3 +EOF +} + +# ogDomainScript path_mountpoint str_domain str_user str_password +#@brief Crea un script .vbs para unir al dominio una maquina windows y el comando adequado en el archivo cmd creado por ogInstallMiniSetup +#@param path_mountpoint directorio donde está montado el sistema Windows +#@param str_filename nombre del fichero cmd donde deberemos introducir el comando de ejecutar el script vbs +#@param str_domain Dominio donde se quiere conectar +#@param str_user Usuario con privilegios para unir al dominio +#@param str_password Password del usuario con privilegios +#@return +#@exception OG_ERR_FORMAT Formato incorrecto. +#@version 1.0.2 - Nueva función +#@author Jonathan Alonso Martinez - Universidad Autonoma de Barcelona +#@date 2011-06-29 +#*/ ## + +function ogDomainScript () +{ +local CMDDIR +# Si se solicita, mostrar ayuda. +if [ "$*" == "help" ]; then + ogHelp "$FUNCNAME" "$FUNCNAME path_mountpoint str_filename str_domain str_user str_password" \ + "$FUNCNAME /mnt/sda1 filename.cmd domain user password_user" + return +fi +# Error si no se reciben 4 parámetros. +[ $# == 5 ] || return $(ogRaiseError $OG_ERR_FORMAT; echo $?) +# Comprobar que existe el directorio de comandos. +CMDDIR=$(ogGetPath "$1/windows/system32") +[ -n "$CMDDIR" ] || ogRaiseError $OG_ERR_NOTFOUND "$1/windows/system32" || return $? + +# Añadimos en el cmd que se ejecutara al arranque, el comando de ejecutar el script que añade al dominio. +ogAddCmd $1 "$2" "CSCRIPT joindomain.vbs" +# Eliminamos el script porque tiene el usuario de administrador de dominio en claro +ogAddCmd $1 "$2" "del /Q C:\Windows\System32\joindomain.vbs" + +# Creamos el archivo joindomain.vbs que nos introduce la maquina en el dominio +cat > "$CMDDIR/joindomain.vbs" << EOF +Const JOIN_DOMAIN = 1 +Const ACCT_CREATE = 2 +Const ACCT_DELETE = 4 +Const WIN9X_UPGRADE = 16 +Const DOMAIN_JOIN_IF_JOINED = 32 +Const JOIN_UNSECURE = 64 +Const MACHINE_PASSWORD_PASSED = 128 +Const DEFERRED_SPN_SET = 256 +Const INSTALL_INVOCATION = 262144 + +strDomain = "$3" +strUser = "$4" +strPassword = "$5" + +Set objNetwork = CreateObject("WScript.Network") +strComputer = objNetwork.ComputerName + +Set objComputer = GetObject("winmgmts:{impersonationLevel=Impersonate}!\\\" & _ + strComputer & "\root\cimv2:Win32_ComputerSystem.Name='" & strComputer & "'") + +ReturnValue = objComputer.JoinDomainOrWorkGroup(strDomain, strPassword, _ + strDomain & "\" & strUser, NULL, JOIN_DOMAIN + ACCT_CREATE) +EOF +} + diff --git a/client/engine/Protocol.lib b/client/engine/Protocol.lib index ecc0d43b..5fe2bc74 100755 --- a/client/engine/Protocol.lib +++ b/client/engine/Protocol.lib @@ -29,14 +29,10 @@ #@date 2011/03/09 #*/ ## - - - function ogUcastSyntax () { -local PARM SESSION SESSIONPARM MODE PORTBASE PERROR -local ADDRESS +local PARM SESSION SESSIONPARM MODE PORTBASE PERROR ADDRESS local TOOL LEVEL DEVICE MBUFFER SYNTAXSERVER SYNTAXCLIENT # Si se solicita, mostrar ayuda. @@ -159,7 +155,7 @@ function ogUcastSendPartition () { # Variables locales -local PART COMMAND RETVAL +local PART COMMAND RETVAL # Si se solicita, mostrar ayuda. if [ "$*" == "help" ]; then @@ -175,7 +171,6 @@ 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=`ogUcastSyntax SENDPARTITION "$3" $PART $4 $5` RETVAL=$? @@ -190,6 +185,7 @@ fi } + #/** # ogUcastReceiverPartition #@brief Función para recibir directamente en la partición el contenido de un fichero imagen remoto enviado por UNICAST. @@ -208,7 +204,7 @@ fi function ogUcastReceiverPartition () { # Variables locales -local PART COMMAND RETVAL +local PART COMMAND RETVAL # Si se solicita, mostrar ayuda. if [ "$*" == "help" ]; then @@ -224,7 +220,6 @@ 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=`ogUcastSyntax RECEIVERPARTITION "$3" $PART $4 $5` RETVAL=$? @@ -260,7 +255,7 @@ fi function ogUcastSendFile () { # Variables locales. -local ARGS SOURCE TARGET COMMAND DEVICE RETVAL LOGFILE +local ARG ARGS SOURCE TARGET COMMAND DEVICE RETVAL LOGFILE #ARGS usado para controlar ubicación de la sesion multicast @@ -301,7 +296,6 @@ esac ogGetPath $SOURCE &> /dev/null || ogRaiseError $OG_ERR_NOTFOUND " device or file $DEVICE not found" || return $? - SESSION=${!ARG} #generamos la instrucción a ejecutar. @@ -340,7 +334,6 @@ fi #*/ ## # - function ogMcastSyntax () { @@ -478,7 +471,7 @@ esac function ogMcastSendFile () { # Variables locales. -local ARGS SOURCE TARGET COMMAND DEVICE RETVAL LOGFILE +local ARGS ARG SOURCE TARGET COMMAND DEVICE RETVAL LOGFILE #LOGFILE="/tmp/mcast.log" @@ -525,7 +518,6 @@ ogGetPath $SOURCE &> /dev/null || ogRaiseError $OG_ERR_NOTFOUND " device or file SESSION=${!ARG} - #generamos la instrucción a ejecutar. COMMAND=`ogMcastSyntax "SENDFILE" "$SESSION" "$SOURCE"` RETVAL=$? @@ -611,6 +603,7 @@ else fi } + #/** # ogMcastSendPartition #@brief Función para enviar el contenido de una partición a multiples particiones remotas. @@ -633,7 +626,7 @@ function ogMcastSendPartition () { # Variables locales -local PART COMMAND RETVAL +local PART COMMAND RETVAL # Si se solicita, mostrar ayuda. if [ "$*" == "help" ]; then @@ -683,7 +676,7 @@ fi function ogMcastReceiverPartition () { # Variables locales -local PART COMMAND RETVAL +local PART COMMAND RETVAL # Si se solicita, mostrar ayuda. if [ "$*" == "help" ]; then @@ -926,7 +919,7 @@ esac # Error si no existe la imagen -[ $SOURCE ] || ogRaiseError $OG_ERR_NOTFOUND || return $? +[ $SOURCE ] || ogRaiseError $OG_ERR_NOTFOUND || return $? [ -r $SOURCE.torrent ] && mv "$SOURCE.torrent" "$SOURCE.torrent.ant" && echo "Esperamos que se refresque el servidor" && sleep 20 @@ -957,7 +950,7 @@ function ogUpdateCacheIsNecesary () { # Variables locales. -local ERROR SOURCE CACHE FILESOURCE MD5SOURCE FILETARGET MD5TARGET +local ERROR SOURCE CACHE FILESOURCE MD5SOURCE FILETARGET MD5TARGET ERROR=0 # Si se solicita, mostrar ayuda. @@ -986,8 +979,8 @@ FILETARGET=`ogGetPath CACHE $2` 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 + ogDeleteFile CACHE "/$2.torrent.bf" &> /dev/null + ogDeleteFile CACHE "/$2.sum" &> /dev/null echo "TRUE=0, es necesario actualizar. Paso 1, la cache no contiene esa imagen " return 0 fi @@ -1029,7 +1022,7 @@ then return 1 else echo "TRUE=0, Si es necesario actualizar. paso 5.b la imagen en cache es distinta, borramos la imagen anterior y devolvemos 0 para confirmar la actualizacion" - rm $FILETARGET + rm -f $FILETARGET return 0 fi diff --git a/client/engine/Registry.lib b/client/engine/Registry.lib index 9ca6a0e4..6423f43a 100755 --- a/client/engine/Registry.lib +++ b/client/engine/Registry.lib @@ -60,8 +60,8 @@ EOT #@return (nada) #@exception OG_ERR_FORMAT Formato incorrecto. #@exception OG_ERR_NOTFOUND Fichero de registro no encontrado. -#@note hive = { default, sam, security, software, system, components } -#@note valuetype = { string, binary, dword }, por defecto: string +#@note hive = { DEFAULT, SAM, SECURITY, SOFTWARE, SYSTEM, COMPONENTS } +#@note valuetype = { STRING, BINARY, DWORD }, por defecto: STRING #@warning Requisitos: chntpw #@warning El sistema de archivos de Windows debe estar montada previamente. #@version 1.0.1 - Nueva función @@ -146,6 +146,7 @@ y EOT } + #/** # ogDeleteRegistryValue path_mountpoint str_hive str_valuename #@brief Elimina un valor del registro de Windows. @@ -198,7 +199,7 @@ EOT #@return str_path - camino del fichero de registro #@exception OG_ERR_FORMAT Formato incorrecto. #@exception OG_ERR_NOTFOUND Fichero de registro no encontrado. -#@note hive = { default, sam, security, software, system, components } +#@note hive = { DEFAULT, SAM, SECURITY, SOFTWARE, SYSTEM, COMPONENTS } #@warning El sistema de archivos de Windows debe estar montada previamente. #@version 1.0.1 - Nueva función #@author Ramon Gomez, ETSII Universidad de Sevilla @@ -212,7 +213,7 @@ local FILE FILENT FILEXP # Si se solicita, mostrar ayuda. if [ "$*" == "help" ]; then ogHelp "$FUNCNAME" "$FUNCNAME path_mountpoint str_hive" - "$FUNCNAME /mnt/sda1 SOFTWARE" + "$FUNCNAME /mnt/sda1 SOFTWARE => /mnt/sda1/WINDOWS/System32/config/SOFTWARE" return fi # Error si no se reciben 2 parámetros. diff --git a/client/engine/System.lib b/client/engine/System.lib index 020692d5..0d060f29 100755 --- a/client/engine/System.lib +++ b/client/engine/System.lib @@ -15,6 +15,7 @@ #@param str_loglevel nivel de registro de incidencias. #@param str_message mensaje (puede recibir más de 1 parámetro. #@return Mensaje mostrado. +#@warning Si no se indica nivel de registro, solo muestra mensaje en pantalla. #@note El nivel de ayuda \c (help) no se registra en el fichero de incidencias. #@version 0.9 - Primera versión para OpenGnSys #@author Ramon Gomez, ETSII Universidad de Sevilla @@ -28,16 +29,17 @@ local LOGLEVEL LOGFILE DATETIME # Selección del nivel de registro (opcional). case "$1" in help) shift ;; - info) LOGLEVEL=$1; shift ;; - warning) LOGLEVEL=$1; shift ;; - error) LOGLEVEL=$1; shift ;; + info) LOGLEVEL="$1"; shift ;; + warning) LOGLEVEL="$1"; shift ;; + error) LOGLEVEL="$1"; shift ;; *) ;; esac -# Pendiente en cliente Initrd. -#DATETIME=$(date +"%F %T") +DATETIME=$(date +"%F %T") if [ -n "$LOGLEVEL" ]; then - logger -s -t "OpenGnSys $LOGLEVEL" $LOGFILE "$DATETIME $*" + logger -s -t "OpenGnSys $LOGLEVEL" -f $LOGFILE "$DATETIME $*" + logger -t "OpenGnSys $LOGLEVEL" -f $OGLOGCOMMAND "$DATETIME $*" + logger -t "OpenGnSys $LOGLEVEL" -f $OGLOGSESSION "$DATETIME $*" else echo "$*" fi @@ -91,7 +93,7 @@ case "$CODE" in $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. @@ -177,19 +179,20 @@ while [ $# -gt 0 ]; do done } -ogCheckProgram () + +function ogCheckProgram () { # Si se solicita, mostrar ayuda. if [ "$*" == "help" ]; then - ogHelp "$FUNCNAME \"str_program1 program2 programN\" " \ - "$FUNCNAME \"partimage partclone mbuffer\" " + ogHelp "$FUNCNAME \"str_program ...\"" \ + "$FUNCNAME \"partimage partclone mbuffer\"" return fi # Error si no se recibe 1 parámetro. [ $# == 1 ] || ogRaiseError $OG_ERR_FORMAT || return $? -local PERROR PLOG +local PERROR PLOG i PERROR=0 PLOG=" " for i in `echo $1` @@ -207,3 +210,4 @@ else return 0 fi } + diff --git a/client/engine/correspondencia-api.txt b/client/engine/correspondencia-api.txt deleted file mode 100644 index e3cff0f5..00000000 --- a/client/engine/correspondencia-api.txt +++ /dev/null @@ -1,227 +0,0 @@ - -OpenGNSys Client Cloning Engine API -=================================== - -La API está dividida en librerías de funciones C/BASH o clases C++/PHP. -La columna de la izquierda es la propuesta de nombre para función/método y la de la derecha es la equivalencia con las actuales en UMA/US/UNIZAR. - -En el resto del fichero están las funciones originales que aún no he revisado. - -Entre el nombre de la función y sus equivalentes, se añade estado de la migración. - version 0.1 incorporada desde hidra, brutalix, EAC, o interfaz hidra-eac pero no compatible. - version 0.x proceso de migración - version 0.9 totalmente funcional con la estructura definida en las primeras funciones insertadas por Ramón. Un ejemplo es ogPartitionActive de la libreria Disk.lib - - -PROPUESTA ---------- - -Librería o clase Install: -- ogConfigureServer 0.1 (CustomEACServer, InterfazCustomEACServer) -- ogLoadConfig (scirpt_uso) - -Librería o clase System: -- ogEcho 0.9 (Msg) -- ogRaiseError (?) - -Librería o clase Disk: -- ogUpdatePartitionTable 0.1 (UpdateDisk) -- ogDeletePartitionTable 0.1 (DeletePartitionTable, hidraDeletePartitionTable) -- ogDevToDisk (Disk, IdPartition, hidraDisk) -- ogDiskToDev 0.9 (DiskEAC) - ogDiskToRelativeDev 0.1 (IdPartition) -- ogCreatePartitions (CreatePartitions, hidraCreatePrimaryPartitions, hidraCreateLogicalPartitions) -- ogListPartitions (ListPartitions, hidraListPartitions, hidraListPrimaryPartitions, hidraListLogicalPartitions) -- ogGetPartitionActive (hidraGetPartitionActive) -- ogSetPartitionActive (SetPartitionActive, hidraSetPartitionActive) -- ogGetPartitionId 0.9 (?) -- ogSetPartitionId 0.1 (SetPartitionType) -- ogGetPartitionSize 0.9 (SizePartition, hidraGetPartitionSize) -- ogSetPartitionSize (hidraSetPartitionSize) - ogGetPartitionsNumber 0.1 (DetectNumberPartition) - ogDeletePartitionsLabels 0.1 (DeleteLABELS) - - -Librería o clase FileSystem: -- ogFormat, ogFormatFs (FormatPartition, hidraFormat) -- ogFormatCache 0.1 (FormatCACHE, hidraFormatCache) -- ogExtend, ogExtendFs (EnlargeFileSystem, hidraFSExtend) -- ogReduce, ogReduceFs (ReduceFileSystem, hidraFSReduce) -- ogGetFsType (TypeFS, hidraTypeFS) -- ogSetFsType (SetPartitionType, hidraSetPartitionType) -- ogFindCache 0.1 (FindCache, hidraFindCache) -- ogIsLocked, ogIsFsLocked (hidraIsLocked) -- ogLock, ogLockFs (hidraLock) -- ogUnlock, ogUnlockFs (hidraUnlock) -- ogMountFs, ogMount (MountPartition, hidraMount) -- ogUnmountFs, ogUnmount (UmountPartition, hidraUnmount) -- ogMountAllFs, ogMountAll (hidraMountAll) -- ogUnmountAllFs, ogUnmountAll (hidraUnmmountAll) -- ogMountRepo, ogMount (MountRepo, hidraMountRepo) -- ogUnmountRepo, ogUnmount (UmountRepo, hidraUnmountRepo) -- ogMountCache, ogMount 0.1 (MountCache, hidraMountCache) -- ogUnmountCache, ogUnmount 0.1 (UmountCache, hidraUnmountCache) - -Librería o clase Image: -- ogCreateImage (CreateImageFromPartition, hidraCreateImageFromPartition) -- ogRestoreImage (RestorePartitionFromImage, RestorePartitionFromPartition, hidraRestorePartitionFromImage) -- ogGetImageSize (hidraImageSize) -- ogCreateTorrent (CreateTorrentFromImage) - - -Librería o clase Boot: -- ogBoot (HDBoot, BootLinuxEX, hidraBoot) -- ogLinuxBootParameters (hidraLinuxBootParameters) -- ogInstallGrub (InstallGrub) -- ogConfigureGrub (ConfGrub) -- ogListRegistryKeys (hidraListRegistryKeys) -- ogGetRegistryValue (hidraGetRegistryKey) -- ogSetRegistryValue (hidraSetRegistryKey) -- ogGetWindowsName (hidraGetWindowsName) -- ogSetWindowsName (hidraSetWindowsName) - ogNewMbrXP v0.1 (NewMbrXP) - -Librería o clase Inventory: -- ogListHardwareInfo (InfoHardware, DetectDevices, hidraHardwareInfo) -- ogGetOsVersion (hidraOSVersion) -- ogListSoftware -- ogListLinuxSoftware (hidraLinuxSoftware) -- ogListWindowsSoftware (idraWindowsSoftware) - ogInfoCache v.0.1 (infoCache) - -Librería o clase File: -- ogGetPath (ConnectToRepo, hidraPath) -- ogIsFile (IfFileExist, IfFileNotExist) - ogNewPath - -Librería o clase String: - -Librería o clase ToolsGNU - - -=================== - -Funciones EAC: - -Referencia del Archivo ATA.lib - -DetectNumberPartition -> GetPartitionNumber -NewMbrXP -DeleteLABELS -IsFSequalPartition -> CompareSizeFSPartition -AmpliarFileSystemNT -> desaparece (la anterior detecta el tipo de FS) -CrearSistemaArchivos -ELIMINARReducirFileSystemNT - -Referencia del Archivo Boot.lib - -SetDefaultBoot -ConvertToGrub -InstalaGrub4dos -moddhcpdconf - -Referencia del Archivo Deploy.lib - -SetDefaultStartpage -DetectMethodTransfer -GetImageFile -UpdateCache -CheckImage -DetectInfoImage -> GetImageInfo -DetectaProgramaImagen -> GetImageProgram -DetectaFSImagen -> GetImageFS -DetectCompresionImage -> GetImageCompression -DeployPartitionFromImage -OpenArchiveZIP -OpenArchiveNT -Synchronize -MakeOffline -MountChrootEACclient -UmountChrootEACclient -MakePhotoConsole -BORRARCheckImageTORRENT - -Referencia del Archivo EACInstall.lib - -BuildEACOSBase -BuildEACBootAgenPXE -BuildEACServer -TestPxe - -Referencia del Archivo FileSystem.lib - -SizeFileSystem -InfoCache -FormatToLower -FormatToUpper -FormatSintaxDev -FormatSintaxSpacePath -FormatSintaxBackSlashPath -GetPath -GetLastStr -GetFirstStr -MkdirPath -DetectaEtiquetas -WhatsTime -HowLongHasWorked -NumberRound - -Referencia del Archivo PostConf.lib - -CrearPatron -ParseaSysprep -NTDetect -LoadRegistrySystem -LoadRegistryUsers -UpdateRegistry -NTChangeName -NTDrivers -NTDrivers2 -NTSetGroupName -NTSetOwner -NTAutoLogon -NTStatusRatonTeclado -NTRunOnceMachine -NTRunMachine -NTRunUser -NTPolUserOn -NTPolUserOFF -NTStatusBootChk -NTNoMsgNewHardware -ChangeName - -Referencia del Archivo Settings.lib - -IPservidor -IfacesEACclient -ExportEACconf -clean - -Referencia del Archivo DBProcess.php - - RegistryHost ($mac, $ip) - SetHostName () - BootServer ($boot, $ip) - Logger () - InsertClassrom ($descripcion, $subred, $netmask, $broadcast, $gateway, $repo_image, $repo_client) - InsertItemtoMenu ($menu, $item) - - -Funciones Hidra: - -HIDRA (* a las que llama la web de hidra,las demás desaparecen salvo algunas que no existe en EAC) - -hidraClientIP -hidraClientMAC -hidraDeleteFile -hidraEACServer -hidraFSCheck -hidraPoweroff -hidraReboot -hidraUpdateCache - - -Funciones de configuracion Unizar - -eac_config_server -opengnsys_installer |