source: client/engine/System.lib @ 3cedc88

Last change on this file since 3cedc88 was 16ac86e, checked in by ramon <ramongomez@…>, 14 years ago

Versión 1.0: Scripts para interfaz web soporte inicial de crear imágenes en modo no administrador.
Modificado #291.

git-svn-id: https://opengnsys.es/svn/branches/version1.0@1631 a21b9725-9963-47de-94b9-378ad31fedc9

  • Property mode set to 100755
File size: 5.4 KB
RevLine 
[9f29ba6]1#!/bin/bash
2#/**
3#@file     System.lib
[9f57de01]4#@brief    Librería o clase System
[9f29ba6]5#@class    System
6#@brief    Funciones básicas del sistema.
7#@version  0.9
8#@warning  License: GNU GPLv3+
9#*/
10
[2e15649]11
[9f29ba6]12#/**
[42669ebf]13#         ogEcho [str_loglevel] "str_message..."
[9f57de01]14#@brief   Muestra mensajes en consola y lo registra en fichero de incidencias.
[42669ebf]15#@param   str_loglevel nivel de registro de incidencias.
16#@param   str_message  mensaje (puede recibir más de 1 parámetro.
[9f57de01]17#@return  Mensaje mostrado.
[aae34f6]18#@note    El nivel de ayuda \c (help) no se registra en el fichero de incidencias.
[ead38fb]19#@version 0.9 - Primera versión para OpenGnSys
[aae34f6]20#@author  Ramon Gomez, ETSII Universidad de Sevilla
[9f57de01]21#@date    2009-07-23
[9f29ba6]22#*/
[9f57de01]23function ogEcho () {
[9f29ba6]24
[59f9ad2]25# Variables locales
[cfeabbf]26local LOGLEVEL LOGFILE DATETIME
[9f57de01]27
[42669ebf]28# Selección del nivel de registro (opcional).
[9f57de01]29case "$1" in
[d071d9b]30     help)    shift ;;
31     info)    LOGLEVEL=$1; shift ;;
32     warning) LOGLEVEL=$1; shift ;;
33     error)   LOGLEVEL=$1; shift ;;
34     *)       ;;
[9f57de01]35esac
[42669ebf]36# Pendiente en cliente Initrd.
37#DATETIME=$(date +"%F %T")
38
[cfeabbf]39if [ -n "$LOGLEVEL" ]; then
[ead38fb]40    logger -s -t "OpenGnSys $LOGLEVEL" $LOGFILE "$DATETIME $*"
[cfeabbf]41else
42    echo "$*"
[9f57de01]43fi
[9f29ba6]44}
45
46
47#/**
[42669ebf]48#         ogRaiseError int_errcode ["str_errmessage" ...]
[9f57de01]49#@brief   Devuelve el mensaje y el código de error correspondiente.
[42669ebf]50#@param   int_errcode    código de error.
51#@param   str_errmessage mensajes complementarios de error.
[b1384da]52#@return  str_message - Mensaje de error.
[9f57de01]53#@warning No definidas
[aae34f6]54#@note    Mensajes internacionales del fichero de idiomas.
[ead38fb]55#@version 0.9 - Primera versión para OpenGnSys.
[aae34f6]56#@author  Ramon Gomez, ETSII Universidad de Sevilla
[9f57de01]57#@date    2009-07-21
[9f29ba6]58#*/
[9f57de01]59function ogRaiseError () {
[9f29ba6]60
[59f9ad2]61# Variables locales
[a5df9b9]62local MSG CODE
[2e15649]63
[42669ebf]64# Obtener código y mensaje de error.
[a5df9b9]65CODE=$1
66case "$CODE" in
[315aaca]67     $OG_ERR_FORMAT)     MSG="$MSG_ERR_FORMAT \"$2\"" ;;
68     $OG_ERR_NOTFOUND)   MSG="$MSG_ERR_NOTFOUND \"$2\"" ;;
69     $OG_ERR_OUTOFLIMIT) MSG="$MSG_ERR_OUTOFLIMIT \"$2\"" ;;
70     $OG_ERR_PARTITION)  MSG="$MSG_ERR_PARTITION \"$2\"" ;;
71     $OG_ERR_LOCKED)     MSG="$MSG_ERR_LOCKED \"$2\"" ;;
72     $OG_ERR_CACHE)      MSG="$MSG_ERR_CACHE \"$2\"" ;;
73     $OG_ERR_FILESYS)    MSG="$MSG_ERR_FILESYS \"$2\"" ;;
74     $OG_ERR_IMAGE)      MSG="$MSG_ERR_IMAGE \"$2\"" ;;
75     $OG_ERR_NOTOS)      MSG="$MSG_ERR_NOTOS \"$2\"" ;;
76     $OG_ERR_NOTEXEC)    MSG="$MSG_ERR_NOTEXEC \"$2\"" ;;
77     *)                  MSG="$MSG_ERR_GENERIC"; CODE=$OG_ERR_GENERIC ;;
[2e15649]78esac
79
[42669ebf]80# Mostrar mensaje de error y salir con el código indicado.
[aae34f6]81ogEcho error "${FUNCNAME[1]}: $MSG" >&2
[a5df9b9]82return $CODE
[9f29ba6]83}
84
85
[aae34f6]86#/**
[b1384da]87#         ogGetCaller
88#@brief   Devuelve nombre del programa o script ejecutor (padre).
89#@param   No.
90#@return  str_name - Nombre del programa ejecutor.
91#@version 0.10 - Primera versión para OpenGnSys.
92#@author  Ramon Gomez, ETSII Universidad de Sevilla
93#@date    2011-01-17
94#*/
95function ogGetCaller () {
96
97# Obtener el nombre del programa o del script que ha llamado al proceso actual.
[16ac86e]98basename $(ps hlp $PPID | awk '{if ($13~/bash/ && $14!="") print $14;
99                                else print $13;}')
[b1384da]100}
101
102
103#/**
104#         ogIsRepoLocked
105#@brief   Comprueba si el repositorio está siendo usado (tiene ficheros abiertos).
106#@param   No.
107#@return  Código de salida: 0 - sin bloquear (libre), 1 - bloqueado.
108#@version 0.10 - Primera versión para OpenGnSys.
109#@author  Ramon Gomez, ETSII Universidad de Sevilla
110#@date    2011-01-17
111#*/
112function ogIsRepoLocked () {
113
114# Variables locales.
115local f FILES
116
117# No hacer nada, si no está definido el punto de montaje del repositorio.
118[ -z "$OGIMG" ] && return
119
120# Comprobar si alguno de los ficheros abiertos por los procesos activos está en el
121# punto de montaje del repositorio de imágenes.
[697a9ee]122FILES=$(for f in /proc/[0-9]*/fd/*; do readlink -f "$f"; done | grep "^$OGIMG")   # */ (comentario Doxygen)
[b1384da]123[ -n "$FILES" ]
124}
125
126
127
128#/**
[1e7eaab]129#         ogHelp ["str_function" ["str_format" ["str_example" ... ]]]
[aae34f6]130#@brief   Muestra mensaje de ayuda para una función determinda.
[42669ebf]131#@param   str_function Nombre de la función.
132#@param   str_format   Formato de ejecución de la función.
133#@param   str_example  Ejemplo de ejecución de la función.
134#@return  str_help - Salida de ayuda.
[aae34f6]135#@note    Si no se indican parámetros, la función se toma de la variable \c $FUNCNAME
136#@note    La descripción de la función se toma de la variable compuesta por \c MSG_FUNC_$función incluida en el fichero de idiomas.
137#@note    Pueden especificarse varios mensajes con ejemplos.
[ead38fb]138#@version 0.9 - Primera versión para OpenGnSys.
[aae34f6]139#@author  Ramon Gomez, ETSII Universidad de Sevilla
140#@date    2009-07-27
141#*/
142function ogHelp () {
143
[59f9ad2]144# Variables locales.
[aae34f6]145local FUNC MSG
146
[42669ebf]147# Mostrar función, descripción y formato.
[aae34f6]148FUNC="${1:-${FUNCNAME[${#FUNCNAME[*]}-1]}}"
149MSG="MSG_HELP_$FUNC"
150ogEcho help "$MSG_FUNCTION $FUNC: ${!MSG}"
151[ -n "$2" ] && ogEcho help "    $MSG_FORMAT: $2"
[42669ebf]152# Mostrar ejemplos (si existen).
[aae34f6]153shift 2
154while [ $# -gt 0 ]; do
155    ogEcho help "    $MSG_EXAMPLE: $1"
156    shift
157done
158}
[914d834]159
160ogCheckProgram ()
161{
162# Si se solicita, mostrar ayuda.
163if [ "$*" == "help" ]; then
164    ogHelp "$FUNCNAME \"str_program1 program2 programN\" " \
165                   "$FUNCNAME \"partimage partclone mbuffer\" "
166    return
167fi
168
169# Error si no se recibe 1 parámetro.
170[ $# == 1 ] || ogRaiseError $OG_ERR_FORMAT || return $?
171
172local PERROR PLOG
173PERROR=0
174PLOG=" "
175for i in `echo $1`
176do
177  if [ ! `which $i` ]
178     then
179        PERROR=1
180        PLOG="$PLOG $i"
181     fi
182done
183if [ "$PERROR" == "1" ]
184then
185        ogRaiseError $OG_ERR_NOTEXEC "$PLOG" || return $?
186else           
187        return 0
188fi
189}
Note: See TracBrowser for help on using the repository browser.