summaryrefslogtreecommitdiffstats
path: root/client/engine/System.lib
diff options
context:
space:
mode:
Diffstat (limited to 'client/engine/System.lib')
-rwxr-xr-xclient/engine/System.lib45
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
+}
+