source: client/engine/System.lib @ 562547a

918-git-images-111dconfigfileconfigure-oglivegit-imageslgromero-new-oglivemainmaint-cronmount-efivarfsmultivmmultivm-ogboot-installerogClonningEngineogboot-installer-jenkinsoglive-ipv6test-python-scriptsticket-301ticket-50ticket-50-oldticket-577ticket-585ticket-611ticket-612ticket-693ticket-700ubu24tplunification2use-local-agent-oglivevarios-instalacionwebconsole3
Last change on this file since 562547a was b1384da, checked in by ramon <ramongomez@…>, 14 years ago

Nuevas funciones en librería System.lib:

  • ogGetCaller: obtiene el nombre del programa o script que llama al proceso actual.
  • ogIsRepoLocked: indica si el repositorio tiene ficheros abiertos (está siendo usado para clonar).

git-svn-id: https://opengnsys.es/svn/trunk@1361 a21b9725-9963-47de-94b9-378ad31fedc9

  • Property mode set to 100755
File size: 4.9 KB
Line 
1#!/bin/bash
2#/**
3#@file     System.lib
4#@brief    Librería o clase System
5#@class    System
6#@brief    Funciones básicas del sistema.
7#@version  0.9
8#@warning  License: GNU GPLv3+
9#*/
10
11
12#/**
13#         ogEcho [str_loglevel] "str_message..."
14#@brief   Muestra mensajes en consola y lo registra en fichero de incidencias.
15#@param   str_loglevel nivel de registro de incidencias.
16#@param   str_message  mensaje (puede recibir más de 1 parámetro.
17#@return  Mensaje mostrado.
18#@note    El nivel de ayuda \c (help) no se registra en el fichero de incidencias.
19#@version 0.9 - Primera versión para OpenGnSys
20#@author  Ramon Gomez, ETSII Universidad de Sevilla
21#@date    2009-07-23
22#*/
23function ogEcho () {
24
25# Variables locales
26local LOGLEVEL LOGFILE DATETIME
27
28# Selección del nivel de registro (opcional).
29case "$1" in
30     help)    shift ;;
31     info)    LOGLEVEL=$1; shift ;;
32     warning) LOGLEVEL=$1; shift ;;
33     error)   LOGLEVEL=$1; shift ;;
34     *)       ;;
35esac
36# Pendiente en cliente Initrd.
37#DATETIME=$(date +"%F %T")
38
39if [ -n "$LOGLEVEL" ]; then
40    logger -s -t "OpenGnSys $LOGLEVEL" $LOGFILE "$DATETIME $*"
41else
42    echo "$*"
43fi
44}
45
46
47#/**
48#         ogRaiseError int_errcode ["str_errmessage" ...]
49#@brief   Devuelve el mensaje y el código de error correspondiente.
50#@param   int_errcode    código de error.
51#@param   str_errmessage mensajes complementarios de error.
52#@return  str_message - Mensaje de error.
53#@warning No definidas
54#@note    Mensajes internacionales del fichero de idiomas.
55#@version 0.9 - Primera versión para OpenGnSys.
56#@author  Ramon Gomez, ETSII Universidad de Sevilla
57#@date    2009-07-21
58#*/
59function ogRaiseError () {
60
61# Variables locales
62local MSG CODE
63
64# Obtener código y mensaje de error.
65CODE=$1
66case "$CODE" in
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 ;;
78esac
79
80# Mostrar mensaje de error y salir con el código indicado.
81ogEcho error "${FUNCNAME[1]}: $MSG" >&2
82return $CODE
83}
84
85
86#/**
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.
98basename $(ps | grep $PPID | \
99                awk -v P=$PPID '{if ($1==P) {
100                                   if ($5~/bash/ && $6!="") print $6
101                                   else print $5; } }')
102}
103
104
105#/**
106#         ogIsRepoLocked
107#@brief   Comprueba si el repositorio está siendo usado (tiene ficheros abiertos).
108#@param   No.
109#@return  Código de salida: 0 - sin bloquear (libre), 1 - bloqueado.
110#@version 0.10 - Primera versión para OpenGnSys.
111#@author  Ramon Gomez, ETSII Universidad de Sevilla
112#@date    2011-01-17
113#*/
114function ogIsRepoLocked () {
115
116# Variables locales.
117local f FILES
118
119# No hacer nada, si no está definido el punto de montaje del repositorio.
120[ -z "$OGIMG" ] && return
121
122# Comprobar si alguno de los ficheros abiertos por los procesos activos está en el
123# punto de montaje del repositorio de imágenes.
124FILES=$(for f in /proc/[0-9]*/fd/*; do readlink -f "$f"; done | grep "^$OGIMG")
125[ -n "$FILES" ]
126}
127
128
129
130#/**
131#         ogHelp ["str_function" ["str_format" ["str_example" ... ]]]
132#@brief   Muestra mensaje de ayuda para una función determinda.
133#@param   str_function Nombre de la función.
134#@param   str_format   Formato de ejecución de la función.
135#@param   str_example  Ejemplo de ejecución de la función.
136#@return  str_help - Salida de ayuda.
137#@note    Si no se indican parámetros, la función se toma de la variable \c $FUNCNAME
138#@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.
139#@note    Pueden especificarse varios mensajes con ejemplos.
140#@version 0.9 - Primera versión para OpenGnSys.
141#@author  Ramon Gomez, ETSII Universidad de Sevilla
142#@date    2009-07-27
143#*/
144function ogHelp () {
145
146# Variables locales.
147local FUNC MSG
148
149# Mostrar función, descripción y formato.
150FUNC="${1:-${FUNCNAME[${#FUNCNAME[*]}-1]}}"
151MSG="MSG_HELP_$FUNC"
152ogEcho help "$MSG_FUNCTION $FUNC: ${!MSG}"
153[ -n "$2" ] && ogEcho help "    $MSG_FORMAT: $2"
154# Mostrar ejemplos (si existen).
155shift 2
156while [ $# -gt 0 ]; do
157    ogEcho help "    $MSG_EXAMPLE: $1"
158    shift
159done
160}
Note: See TracBrowser for help on using the repository browser.