3 ## Los scrips que incluyan deben definir BASE_DIR antes de incluirme!
6 LOCK_DIR="$BASE_DIR/lock"
8 # Lee del teclado un valor
11 # $1 = Leyeda a mostrar de pregunta
12 # $2 = Valor default por si el usuario no ingresa nada
13 # $3 = Variable donde guardar el valor ingresado (o el default)
18 read -p "$MSG [$DEFAULT] : " ALGO
19 # Si el usuario no ingresa nada
20 # nos quedamos con el valor default
21 if [ ! -z "$ALGO" ] ; then
28 # Realiza una pregunta al usuario
31 # $1 = Leyeda a mostrar de preguntar
32 # $2 = string con las opciones validas
33 # $3 = Variable donde guardar el valor ingresado
34 # $4 = Valor por defecto si se apreta ENTER
41 read -p "$PREGUNTA [$OPCIONES]: " RTA
43 # Si me pasaron un default y la respuesta es vacía
44 if [ -n "$DEFAULT" -a -z "$RTA" ]; then
50 # Escapeo el caracter '-' por '\-'
51 RTA=$(echo $RTA | sed "s/\-/\\\-/")
53 IS_OK=`echo "$OPCIONES" | grep "$RTA"`
54 if [ ! -z "$IS_OK" ] && [ ! -z "$RTA" ] ; then
61 validar_solo_numeros () {
62 TEST=`echo "$1" | sed "s/[0-9]*//g"`
63 if [ "$TEST" == "" ] ; then
67 # ups, hay algo que no es un numero
71 # Crea un archivo de lock para un script
72 # Devuelve: 0 si ok, 1 si ya esta lockeado, 2 si no pudo crear lock.
75 # si ya esta loqueado, no lo vuelvo a crear
76 is_lock "$1" && return 1
77 # Si no puedo escribir en el dir de lock, da error
78 [ -w "$LOCK_DIR" ] || return 2
79 echo $$ > "$LOCK_DIR/$1.pid"
83 # Desbloquea el script
84 # Uso: unlock programa
86 rm -rf "$LOCK_DIR/$1.pid"
90 # Consulta si un script esta lockeado
91 # Uso: is_lock programa
93 if [ -e "$LOCK_DIR/$1.pid" ] ; then
94 # Lock file encontrado!
101 # Obtiene el pid de un programa lockeado
102 # Uso: lock_pid programa
105 is_lock "$1" && cat "$LOCK_DIR/$1.pid"
108 # Verifica que un valor este entre otros 2 .... $1 pertecezca a [$2,$3]
109 # $1 Numero a validar
114 if [ "$1" -ge "$2" ] && [ "$1" -le "$3" ]; then
121 # Muestra mensaje y sale con código de error
122 # Uso: die mensaje [código de error = 1]
129 # Imprime mensaje por salida de error
137 # Pone un MSG en el log
139 # $1 = Archivo del log
144 fecha=$(date +%d/%m/%Y-%H:%M)
145 echo "$fecha $USER $2:\"$3\"" >> $1
150 # Trunca un archivo de log si pasa el tamaño máximo.
151 # Uso: clean_log log_filename max_log_size_bytes
157 tmp=`dirname "$LOGFILE"`"/`basename $0`.$$.temp"
158 # Verifico que el logfile no se pase del tamaño maximo
159 tam=`stat -c '%s' "$LOGFILE"`
160 # Si se paso del maximo dejo las ultimas 100 lineas
161 if [ "$tam" -ge "$LOGSIZE" ]; then
162 tail -n 100 "$LOGFILE" > "$tmp"