X-Git-Url: https://git.llucax.com/z.facultad/75.08/llamadas.git/blobdiff_plain/e6d23f399c22a23a8ac3a9e41128c1494aa5fa7e..8924bf6b7d40b1b543706926d806e4104db61393:/inst/util.sh diff --git a/inst/util.sh b/inst/util.sh index 0bb46f1..2465e98 100755 --- a/inst/util.sh +++ b/inst/util.sh @@ -31,13 +31,22 @@ leer () { # $1 = Leyeda a mostrar de preguntar # $2 = string con las opciones validas # $3 = Variable donde guardar el valor ingresado +# $4 = Valor por defecto si se apreta ENTER # preguntar () { - PREGUNTA=$1 - OPCIONES=$2 - while [ true ] ; do + PREGUNTA="$1" + OPCIONES="$2" + DEFAULT="$4" + while true; do read -p "$PREGUNTA [$OPCIONES]: " RTA + # Si me pasaron un default y la respuesta es vacía + if [ -n "$DEFAULT" -a -z "$RTA" ]; then + # devuelvo default + RTA="$DEFAULT" + return 0 + fi + # Escapeo el caracter '-' por '\-' RTA=$(echo $RTA | sed "s/\-/\\\-/") @@ -61,6 +70,7 @@ validar_solo_numeros () { # Crea un archivo de lock para un script # Devuelve: 0 si ok, 1 si ya esta lockeado, 2 si no pudo crear lock. +# Uso: lock programa lock () { # si ya esta loqueado, no lo vuelvo a crear is_lock "$1" && return 1 @@ -71,12 +81,14 @@ lock () { } # Desbloquea el script +# Uso: unlock programa unlock () { rm -rf "$LOCK_DIR/$1.pid" } # Consulta si un script esta lockeado +# Uso: is_lock programa is_lock () { if [ -e "$LOCK_DIR/$1.pid" ] ; then # Lock file encontrado! @@ -86,6 +98,13 @@ is_lock () { return 1 } +# Obtiene el pid de un programa lockeado +# Uso: lock_pid programa +lock_pid() +{ + is_lock "$1" && cat "$LOCK_DIR/$1.pid" +} + # Verifica que un valor este entre otros 2 .... $1 pertecezca a [$2,$3] # $1 Numero a validar # $2 Cota inferior @@ -114,3 +133,34 @@ perr() echo $@ >&2 } + +# Pone un MSG en el log +# Parametros : +# $1 = Archivo del log +# $2 = Comando +# $3 = Mensaje +# $4 = Tamaño maximo +put_log() { + fecha=$(date +%d/%m/%Y-%H:%M) + echo "$fecha $USER $2:\"$3\"" >> $1 + + clean_log "$1" "$4" +} + +# Trunca un archivo de log si pasa el tamaño máximo. +# Uso: clean_log log_filename max_log_size_bytes +clean_log() +{ + LOGFILE="$1" + LOGSIZE="$2" + # Archivo temporal + tmp=`dirname "$LOGFILE"`"/`basename $0`.$$.temp" + # Verifico que el logfile no se pase del tamaño maximo + tam=`stat -c '%s' "$LOGFILE"` + # Si se paso del maximo dejo las ultimas 100 lineas + if [ "$tam" -ge "$LOGSIZE" ]; then + tail -n 100 "$LOGFILE" > "$tmp" + mv "$tmp" "$LOGFILE" + fi +} +