diff options
Diffstat (limited to 'client/engine/System.lib')
-rwxr-xr-x | client/engine/System.lib | 45 |
1 files changed, 39 insertions, 6 deletions
diff --git a/client/engine/System.lib b/client/engine/System.lib index cbadd952..d016be13 100755 --- a/client/engine/System.lib +++ b/client/engine/System.lib @@ -4,7 +4,7 @@ #@brief Librería o clase System #@class System #@brief Funciones básicas del sistema. -#@version 1.0.6 +#@version 1.1.0 #@warning License: GNU GPLv3+ #*/ @@ -17,6 +17,7 @@ #@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. +#@warning Si DEBUG="no", no se registran mensajes de error. #@note logfile = { log, command, session }; usa "log" si se indica nivel de registro. #@note loglevel = { help, info, warning, error } #@note El nivel de ayuda \c (help) no se registra en el fichero de incidencias. @@ -26,6 +27,9 @@ #@version 1.0.5 - Elegir fichero de log. #@author Ramon Gomez, ETSII Universidad de Sevilla #@date 2014-03-17 +#@version 1.1.0 - Posibilidad de no registrar mensajes en ficheros. +#@author Ramon Gomez, ETSII Universidad de Sevilla +#@date 2015-11-10 #*/ function ogEcho () { @@ -53,7 +57,9 @@ esac if [ -n "$LOGLEVEL" ]; then DATETIME=$(date +"%F %T") - logger -s -t "OpenGnSys $LOGLEVEL" "$DATETIME $*" 2>&1 | tee -a $OGLOGFILE $LOGS + # Registrar mensajes en fichero de log si la depuración no está desactivada. + [ "${DEBUG,,}" != "no" ] && LOGS="$OGLOGFILE $LOGS" + logger -s -t "OpenGnsys $LOGLEVEL" "$DATETIME $*" 2>&1 | tee -a $LOGS else echo "$*" | tee -a $LOGS fi @@ -124,8 +130,9 @@ return ${PIPESTATUS[0]} function ogGetCaller () { # Obtener el nombre del programa o del script que ha llamado al proceso actual. -basename "$(ps hlp $PPID | awk '{if ($13~/bash/ && $14!="") print $14; - else { sub(/^-/,"",$13); print $13; } }')" +basename "$(COLUMNS=200 ps hp $PPID -o args | \ + awk '{if ($1~/bash/ && $2!="") { print $2; } + else { sub(/^-/,"",$1); print $1; } }')" } @@ -183,6 +190,12 @@ function ogRaiseError () { # Variables locales local CONT=1 LOGS MSG CODE FUNCS +# Si se solicita, mostrar ayuda. +if [ "$*" == "help" ]; then + ogHelp "$FUNCNAME" "$FUNCNAME [str_logfile ...] int_errorcode str_errormessage" + return +fi + # Selección de rgistros de incidencias. while [ $CONT ]; do case "${1,,}" in @@ -201,6 +214,7 @@ case "$CODE" in $OG_ERR_LOCKED) MSG="$MSG_ERR_LOCKED \"$2\"" ;; $OG_ERR_CACHE) MSG="$MSG_ERR_CACHE \"$2\"" ;; $OG_ERR_NOGPT) MSG="$MSG_ERR_NOGPT \"$2\"" ;; + $OG_ERR_REPO) MSG="$MSG_ERR_REPO \"$2\"" ;; $OG_ERR_FILESYS) MSG="$MSG_ERR_FILESYS \"$2\"" ;; $OG_ERR_IMAGE) MSG="$MSG_ERR_IMAGE \"$2\"" ;; $OG_ERR_NOTOS) MSG="$MSG_ERR_NOTOS \"$2\"" ;; @@ -236,8 +250,10 @@ esac FUNCS="${FUNCNAME[@]:1}" FUNCS="${FUNCS/main/$(basename $0 2>/dev/null)}" -# Mostrar mensaje de error y salir con el código indicado. -ogEcho $LOGS error "${FUNCS// /<-}: $MSG" >&2 +# Mostrar mensaje de error si es función depurable y salir con el código indicado. +if [ $CODE == $OG_ERR_FORMAT ] || ogCheckStringInGroup "$FUNCS" "$NODEBUGFUNCTIONS" || ! ogCheckStringInGroup "${FUNCS%% *}" "$NODEBUGFUNCTIONS"; then + ogEcho $LOGS error "${FUNCS// /<-}: $MSG" >&2 +fi return $CODE } @@ -259,6 +275,12 @@ function ogIsRepoLocked () # Variables locales. local f FILES +# Si se solicita, mostrar ayuda. +if [ "$*" == "help" ]; then + ogHelp "$FUNCNAME" "$FUNCNAME" "if $FUNCNAME; then ...; fi" + return +fi + # No hacer nada, si no está definido el punto de montaje del repositorio. [ -z "$OGIMG" ] && return 1 @@ -300,3 +322,14 @@ else fi } + + +#### PRUEBA +function ogIsVirtualMachine() { +case "$(dmidecode -s system-product-name)" in + KVM|VirtualBox) + return 1 ;; + *) return 0 ;; +esac +} + |