summaryrefslogtreecommitdiffstats
path: root/server
diff options
context:
space:
mode:
authorRamón M. Gómez <ramongomez@us.es>2019-10-29 14:32:47 +0100
committerRamón M. Gómez <ramongomez@us.es>2019-10-29 14:32:47 +0100
commit940b1c7f5112cf2690568928ad7d0133c53d2981 (patch)
tree901ffccd76bfd02e2e05bd7513a423b4c26b896c /server
parent5cef356b05683cad3313e1568741db183b0754a3 (diff)
#816 856: Scripts `setserveraddr` and etclientmode` use common Shell function file.
Diffstat (limited to 'server')
-rwxr-xr-xserver/bin/setclientmode50
-rwxr-xr-xserver/bin/setserveraddr5
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)