diff options
author | Ramón M. Gómez <ramongomez@us.es> | 2019-10-29 14:32:47 +0100 |
---|---|---|
committer | Ramón M. Gómez <ramongomez@us.es> | 2019-10-29 14:32:47 +0100 |
commit | 940b1c7f5112cf2690568928ad7d0133c53d2981 (patch) | |
tree | 901ffccd76bfd02e2e05bd7513a423b4c26b896c /server/bin | |
parent | 5cef356b05683cad3313e1568741db183b0754a3 (diff) |
#816 856: Scripts `setserveraddr` and etclientmode` use common Shell function file.
Diffstat (limited to 'server/bin')
-rwxr-xr-x | server/bin/setclientmode | 50 | ||||
-rwxr-xr-x | server/bin/setserveraddr | 5 |
2 files changed, 19 insertions, 36 deletions
diff --git a/server/bin/setclientmode b/server/bin/setclientmode index bdebb063..f8d5b55f 100755 --- a/server/bin/setclientmode +++ b/server/bin/setclientmode @@ -1,13 +1,13 @@ #!/bin/bash #/** -# setclientmode NombrePlatilla { NombrePC | NombreAula } Modo_trabajo -#@file setclientmode +#@file setclientmode #@brief Configura el archivo de arranque de PXE para los clientes, ya sea un equipo o un aula, generando enlaces a archivos usados como plantilla. +#@usage setclientmode Plantilla Ambito Modo #@warning El archivo PXE por defecto "default" se deja en modo de ejecución "user" y se eliminan los enlaces para equipos con la plantilla por defecto. -#@param $1 NombrePlatilla -#@param $2 Ámbito { NombrePC | NombreAula } -#@param $3 Modo_trabajo = { 0, TEMP, 1, PERM } - 0 si es temporal y 1 si es permanente. +#@param Plantilla: nombre de plantilla PXE +#@param Ambito: nombre de cliente o aula +#@param Modo: "TEMP" (temporal) o "PERM" (permanente) #@version 1.0 - Versión inicial. #@author Irina Gomez y Ramon Gomez - Univ. Sevilla, noviembre 2010 #@version 1.0.1 - Identificacion de la plantilla por nombre en consola = en primera linea de la plantilla @@ -36,42 +36,28 @@ PXEDIR[1]=$OPENGNSYS/tftpboot/grub LOGFILE=$OPENGNSYS/log/opengnsys.log MYCNF=/tmp/.my.cnf.$$ +source $OPENGNSYS/lib/ogfunctions.sh +# Mostrar ayuda. +[ "$*" == "help" ] && help # Control básico de errores. -if [ $# -ne 3 ]; then - echo "$PROG: Error de ejecución" - echo "Formato: $PROG PLANTILLA [NOMBRE_PC|NOMBRE_AULA] MODO" - exit 1 -fi - +[ $# -ne 3 ] && raiseError usage # Comprobar si el usuario es "root" o el del servicio web. WEBUSER=$(ps axho user,comm|awk '!/root/ && /httpd|apache/ {print $1; exit;}') -if [ "$USER" != "root" -a "$USER" != "$WEBUSER" ]; then - echo "$PROG: Need to be root. (The console can also call the script)." >&2 - exit 1 -fi - +[ "$USER" != "root" -a "$USER" != "$WEBUSER" ] && raiseError access "Need to be root (or webserver user)" # El acceso a mysql por las variables pasadas o por el fichero de configuarción. if [ -z "$USUARIO" ] || [ -z "$PASSWORD" ] || [ -z "$CATALOG" ]; then - if [ -r "$SERVERCONF" ]; then - source $SERVERCONF - else - echo "$PROG: Sin acceso a fichero de configuración" - exit 2 - fi -fi -TEMPLATE[0]=$(grep -l "^#.* $1 *$" ${PXEDIR[0]}/templates/*) -TEMPLATE[1]=$(grep -l "^#.* $1 *$" ${PXEDIR[1]}/templates/*) -if [ -z "${TEMPLATE[0]}" -a -z "${TEMPLATE[1]}" ]; then - echo "No existe archivo platilla: $1" - exit + [ ! -r "$SERVERCONF" ] && raiseError access "Cannot read access configuration file" + source $SERVERCONF fi +TEMPLATE[0]=$(grep -l "^#.* $1 *$" ${PXEDIR[0]}/templates/* 2>/dev/null) +TEMPLATE[1]=$(grep -l "^#.* $1 *$" ${PXEDIR[1]}/templates/* 2>/dev/null) +[ -z "${TEMPLATE[0]}${TEMPLATE[1]}" ] && raiseError notfound "PXE template file \"$1\"" case "${3^^}" in 0|TEMP) MODE="TEMP" ;; 1|PERM) MODE="PERM" ;; - *) echo "$PROG: Modo desconodido: 0, TEMP (temporal), 1, PERM (permanente)" - exit 1 ;; + *) raiseError notfound "Unknown mode \"$3\"" ;; esac # Sustituir caracteres ' por \' para evitar inyección SQL. @@ -94,8 +80,8 @@ ETHERNET=$(mysql --defaults-extra-file=$MYCNF -D "$CATALOG" -s -N -e \ WHERE aulas.nombreaula='$RESOURCE' OR nombreordenador='$RESOURCE';") if [ -z "$ETHERNET" ]; then - date +"%b %d %T $PROG: No existe aula o equipo con el nombre \"$2\"" | tee -a $LOGFILE - exit 1 + date +"%b %d %T $PROG: No existe aula o equipo con el nombre \"$2\"" >> $LOGFILE + raiseError notfound "Client or lab name \"$2\"" fi # Copiar fichero de configuración y actualizar base de datos. diff --git a/server/bin/setserveraddr b/server/bin/setserveraddr index 4d7538da..fc5efc5d 100755 --- a/server/bin/setserveraddr +++ b/server/bin/setserveraddr @@ -52,10 +52,7 @@ done if [ -n "$SERVERIP" ]; then # Showing warning to inform that initiated clients may hang. read -rp "WARNING: initiated clients can hang. Continue? (y/n): " ANSWER - if [ "${ANSWER,,}" != "y" ]; then - echo "Operation canceled." - exit 0 - fi + [ "${ANSWER,,}" != "y" ] && raiseError cancel "Do nothing" # Temporary files. tmpfile=$(mktemp /tmp/og.XXXXX) MYCNF=$(mktemp /tmp/.my.cnf.XXXXX) |