summaryrefslogtreecommitdiffstats
path: root/client
diff options
context:
space:
mode:
authorramon <ramongomez@us.es>2014-09-17 12:14:36 +0000
committerramon <ramongomez@us.es>2014-09-17 12:14:36 +0000
commit9a2f946f7ce201f2ce6f1218639684844dbaf7cf (patch)
treedbfab0952105c8afe8ebe77cadbdc96606dae0ef /client
parent7710a996f07136fbe03e838ad18d4cda3fde4a8e (diff)
#611: integrar código del ticket:611 con nueva función {{{ogExecAndLog}}} que muestra y registra la salida de un comando.
git-svn-id: https://opengnsys.es/svn/branches/version1.0@4390 a21b9725-9963-47de-94b9-378ad31fedc9
Diffstat (limited to 'client')
-rwxr-xr-xclient/engine/System.lib50
1 files changed, 48 insertions, 2 deletions
diff --git a/client/engine/System.lib b/client/engine/System.lib
index 51365902..867cd096 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.5
+#@version 1.0.6
#@warning License: GNU GPLv3+
#*/
@@ -25,7 +25,7 @@
#@date 2009-07-23
#@version 1.0.5 - Elegir fichero de log.
#@author Ramon Gomez, ETSII Universidad de Sevilla
-#@date 2009-07-23
+#@date 2014-03-17
#*/
function ogEcho () {
@@ -61,6 +61,52 @@ fi
#/**
+# ogExecAndLog str_logfile ... str_command ...
+#@brief Ejecuta un comando y guarda su salida en fichero de registro.
+#@param str_logfile fichero de registro (pueden ser varios).
+#@param str_command comando y comandos a ejecutar.
+#@return Salida de ejecución del comando.
+#@note str_logfile = { LOG, SESSION, COMMAND }
+#@version 1.0.6 - Primera versión para OpenGnSys
+#@author Ramon Gomez, ETSII Universidad de Sevilla
+#@date 2013-07-02
+#*/
+function ogExecAndLog () {
+
+# Variables locales
+local ISCOMMAND ISLOG ISSESSION COMMAND CONTINUE=1 FILES REDIREC
+
+# Si se solicita, mostrar ayuda.
+if [ "$*" == "help" ]; then
+ ogHelp "$FUNCNAME str_logfile ... str_command ..." \
+ "$FUNCNAME COMMAND ls -al /"
+ return
+fi
+
+# Procesar parámetros.
+while [ $CONTINUE ]; do
+ case "${1,,}" in
+ command) ISCOMMAND=1; shift ;;
+ log) ISLOG=1; shift ;;
+ session) ISSESSION=1; shift ;;
+ *) COMMAND="$@"
+ CONTINUE= ;;
+ esac
+done
+# Error si no se recibe un comando que ejecutar.
+[ -n "$COMMAND" ] || ogRaiseError $OG_ERR_FORMAT || return $?
+
+# Componer lista de ficheros de registro.
+[ $ISCOMMAND ] && (FILES="$OGLOGCOMMAND"; > $FILES; REDIREC="2&>1")
+[ $ISLOG ] && FILES="$FILES $OGLOGFILE"
+[ $ISSESSION ] && FILES="$FILES $OGLOGSESSION"
+
+# Ejecutar comando.
+$COMMAND $REDIREC | tee -a $FILES
+}
+
+
+#/**
# ogRaiseError [str_logtype ...] int_errcode ["str_errmessage" ...]
#@brief Devuelve el mensaje y el código de error correspondiente.
#@param str_logtype tipo de registro de incidencias.