diff options
author | ramon <ramongomez@us.es> | 2014-09-17 12:14:36 +0000 |
---|---|---|
committer | ramon <ramongomez@us.es> | 2014-09-17 12:14:36 +0000 |
commit | 9a2f946f7ce201f2ce6f1218639684844dbaf7cf (patch) | |
tree | dbfab0952105c8afe8ebe77cadbdc96606dae0ef /client | |
parent | 7710a996f07136fbe03e838ad18d4cda3fde4a8e (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-x | client/engine/System.lib | 50 |
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. |