summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorramon <ramongomez@us.es>2017-06-02 10:50:55 +0000
committerramon <ramongomez@us.es>2017-06-02 10:50:55 +0000
commit5d28f39e946acc4db676b2c72bfb9b468921cfa7 (patch)
tree50aaedb24a020b7c4bae86c9d929687afdd7c1d5
parent2e538275a4ab51ba5c760b5ab1b5410f0ab139a3 (diff)
#768: Nuevos scripts {{{listclientlive}}} y {{{setclientlive}}} para listar y asignar clientes ogLive.
git-svn-id: https://opengnsys.es/svn/branches/version1.1@5336 a21b9725-9963-47de-94b9-378ad31fedc9
-rw-r--r--admin/WebConsole/rest/ogagent.php14
-rw-r--r--doc/CHANGELOG.es.txt4
-rwxr-xr-xserver/bin/listclientlive49
-rwxr-xr-xserver/bin/listclientmode2
-rwxr-xr-xserver/bin/setclientlive70
5 files changed, 138 insertions, 1 deletions
diff --git a/admin/WebConsole/rest/ogagent.php b/admin/WebConsole/rest/ogagent.php
index 30d0895d..e2a59aee 100644
--- a/admin/WebConsole/rest/ogagent.php
+++ b/admin/WebConsole/rest/ogagent.php
@@ -19,6 +19,20 @@ function writeLog($message = "") {
file_put_contents(LOG_FILE, date(DATE_ISO8601).": $message\n", FILE_APPEND);
}
+// Look for "show popup" pending operations into client's actions queue.
+function checkPendingPopup($clntid) {
+ global $cmd;
+
+ // Look for commands available to launch on the client.
+ $cmd->CreaParametro("@clntid", $clntid, 1);
+ $cmd->texto = <<<EOD
+SELECT parametros
+ FROM acciones
+ WHERE idordenador=@clntid AND estado=$ACCION_INICIADA AND idcomando=16;";
+EOD
+// ...
+}
+
/**
* @brief OGAgent notifies that its service is started on a client.
* @note Route: /ogagent/started, Method: POST, Format: JSON
diff --git a/doc/CHANGELOG.es.txt b/doc/CHANGELOG.es.txt
index 72e12e74..1f724b02 100644
--- a/doc/CHANGELOG.es.txt
+++ b/doc/CHANGELOG.es.txt
@@ -24,12 +24,15 @@ Tickets resueltos en módulo OpenGnsys Cloning Engine:
Tickets resueltos en módulo OpenGnsys Client:
#233 Añadir reloj al cliente (resuelto en #746)
#244 Internacionalización de los mensajes del Browser (mejora)
+#528 busybox tftp ogLive con acceso subdirectorio contenedor tftpd del server
#625 Modo offline: segundo sistema de ficheros en cache/USB (duplicado de #467)
#709 Script para instalar módulos del Kenrel en el cliente ogLive
#717 Indicar manualmente parámetros de arranque de un S.O.
#724 Cliente ogLive 1.1.0 basado en Ubuntu 15.10 o Ubuntu 16.04 LTS
#725 Sincronización horaria de clientes con servidor NTP
#746 Reestructurar barra de estado del Browser del cliente (mejora)
+#769 ogLive ampliar espacio de memoria para instalar software en "caliente" y exportar proxy de https(s) y ftp(s)
+#773 Incluir script personalizado para bootOs
#774 Soportar clientes ogLive de 64 bits
#783 Browser registra salida de comandos ejecutados al pulsar enlace
@@ -39,6 +42,7 @@ Tickets resueltos en módulo OpenGnsys Server:
#723 Cambio temporal de fichero de arranque PXE
#736 Mejorar la seguridad del servidor
#745 Depurar ogAdmServer (duplicado de #559)
+#787 Todos los elementos del ogLive se localizan en el Server
Tickets resueltos en módulo OpenGnsys Repository Server:
#379 Usar identificador de operación para el ogAdmRepoAux (no se resolverá)
diff --git a/server/bin/listclientlive b/server/bin/listclientlive
new file mode 100755
index 00000000..006f4a5e
--- /dev/null
+++ b/server/bin/listclientlive
@@ -0,0 +1,49 @@
+#!/bin/bash
+# listclientlive: Lista la distribución ogLive asociada a los clientes,
+# ya sea un equipo o un aula.
+# Uso: listclienlive NombrePC | NombreAula
+# Autor: Ramón M. Gómez - Univ. Sevilla, junio 2017
+
+
+# Variables.
+PROG=$(basename $0)
+OPENGNSYS=${OPENGNSYS:-"/opt/opengnsys"}
+SERVERCONF=$OPENGNSYS/etc/ogAdmServer.cfg
+TFTPDIR=$OPENGNSYS/tftpboot
+MYCNF=/tmp/.my.cnf.$$
+
+# Control básico de errores.
+if [ $# -ne 1 ]; then
+ echo "$PROG: Error de ejecución" >&2
+ echo "Formato: $PROG [NOMBRE_PC|NOMBRE_AULA]" >&2
+ exit 1
+fi
+if [ ! -r $SERVERCONF ]; then
+ echo "$PROG: Sin acceso a fichero de configuración" >&2
+ exit 2
+fi
+
+# Obtener datos de acceso a la Base de datos.
+source $SERVERCONF
+# Sustituir caracteres ' por \' para evitar inyección SQL.
+RESOURCE="${1//\'/\'}"
+# Componer fichero con credenciales de conexión.
+touch $MYCNF
+chmod 600 $MYCNF
+cat << EOT > $MYCNF
+[client]
+user=$USUARIO
+password=$PASSWORD
+EOT
+# Borrar el fichero temporal si termina el proceso.
+trap "rm -f $MYCNF" 0 1 2 3 6 9 15
+# Obtener nombre de ordenador individual o todos los de una aula e indicar su plantilla asociada.
+mysql --defaults-extra-file=$MYCNF -D "$CATALOG" -s -N -e \
+ "SELECT nombreordenador, oglivedir FROM ordenadores
+ JOIN aulas USING (idaula)
+ WHERE aulas.nombreaula='$RESOURCE'
+ OR nombreordenador='$RESOURCE';" | \
+ while read PC OGLIVE; do
+ echo "Equipo $PC asociado a cliente \"$OGLIVE\" $([ -e $TFTPDIR/$OGLIVE ] || echo "(inexistente)")"
+ done
+
diff --git a/server/bin/listclientmode b/server/bin/listclientmode
index 2496a6da..5d02bcee 100755
--- a/server/bin/listclientmode
+++ b/server/bin/listclientmode
@@ -46,6 +46,6 @@ mysql --defaults-extra-file=$MYCNF -D "$CATALOG" -s -N -e \
WHERE aulas.nombreaula='$RESOURCE'
OR nombreordenador='$RESOURCE';" | \
while read PC TMPL; do
- echo "Equipo $PC asociado a arranque tipo \"$(head -1 $TMPLDIR/$TMPL |cut -f2 -d" ")\" (fichero $TMPL)"
+ echo "Equipo \"$PC\" asociado a arranque tipo \"$(head -1 $TMPLDIR/$TMPL |cut -f2 -d" ")\" (fichero $TMPL)"
done
diff --git a/server/bin/setclientlive b/server/bin/setclientlive
new file mode 100755
index 00000000..ea3a7db0
--- /dev/null
+++ b/server/bin/setclientlive
@@ -0,0 +1,70 @@
+#!/bin/bash
+
+#/**
+# setclientlive DirOGLive | IndiceOGLive { NombrePC | NombreAula } Modo_trabajo
+#@file setclientlive
+#@brief Configura el archivo de arranque de PXE para asignar el cliente ogLive, ya sea a un equipo o a un aula
+#@param $1 DirOGLive, IndiceOGLive o "default" (según script "oglivecli")
+#@param $2 Ámbito { NombrePC | NombreAula }
+#warning No se admiten cambios temporales.
+#@version 1.1.0 - Versión inicial basada en script "setclientmode".
+#@author Ramón M. Gómez - Univ. Sevilla, junio 2017
+#*/ ##
+
+
+# Variables.
+PROG=$(basename "$0")
+PATH=$PATH:$(dirname $(realpath "$0"))
+OPENGNSYS=${OPENGNSYS:-"/opt/opengnsys"}
+SERVERCONF=$OPENGNSYS/etc/ogAdmServer.cfg
+TFTPDIR=$OPENGNSYS/tftpboot
+LOGFILE=$OPENGNSYS/log/opengnsys.log
+MYCNF=/tmp/.my.cnf.$$
+
+# Control básico de errores.
+if [ $# -ne 2 ]; then
+ echo "$PROG: Error de ejecución" >&2
+ echo "Formato: $PROG {DIR_OGLIVE|INDICE_OGLIVE|default} {NOMBRE_PC|NOMBRE_AULA}" >&2
+ exit 1
+fi
+if [ ! -r $SERVERCONF ]; then
+ echo "$PROG: Sin acceso a fichero de configuración" >&2
+ exit 2
+fi
+case "$1" in
+ [0-9]*) DIR=$(oglivecli search $1 2>/dev/null) ;;
+ "default") DIR="ogLive" ;;
+ *) if oglivecli search "$1" 2>/dev/null; then DIR="$1"; fi ;;
+esac
+if [ -z "$DIR" ]; then
+ echo "$PROG: ogLive no ecncontrado, listar ejecutando \"oglivecli list\"" >&2
+ exit 1
+fi
+if [ ! -e "$TFTPDIR/$DIR" ]; then
+ echo "$PROG: directorio de ogLive no ecncontrado: \"DIR\"" >&2
+ exit 1
+fi
+
+# Obtener datos de acceso a la Base de datos.
+source $SERVERCONF
+# Sustituir caracteres ' por \' para evitar inyección SQL.
+OGLIVEDIR="${DIR//\'/\'}"
+RESOURCE="${2//\'/\'}"
+# Componer fichero con credenciales de conexión.
+touch $MYCNF
+chmod 600 $MYCNF
+cat << EOT > $MYCNF
+[client]
+user=$USUARIO
+password=$PASSWORD
+EOT
+# Borrar el fichero temporal si termina el proceso.
+trap "rm -f $MYCNF" 0 1 2 3 6 9 15
+# Actualizar ogLive para todos los clientes y reasignar plantilla PXE.
+listclientmode "$RESOURCE" | awk -F\" '{print $2,$4}' | \
+ while read PC BOOTMODE; do
+ date +"%b %d %T $PROG: Configurando \"$PC\" con cliente \"$OGLIVEDIR\"" | tee -a $LOGFILE
+ mysql --defaults-extra-file=$MYCNF -D "$CATALOG" -e \
+ "UPDATE ordenadores SET oglivedir='$OGLIVEDIR' WHERE nombreordenador='$PC';"
+ setclientmode $BOOTMODE $PC PERM >/dev/null
+ done