> **📝 SIMULACRO DE EXAMEN: CONTROL 10 (NIVEL ALTO)**

# Parte I: Poder Autonómico y Prevención de Riesgos

## Pregunta 1 (Tipo Test) - Tema 2 (Estatuto de Autonomía de Galicia - Instituciones)

De acuerdo con el Estatuto de Autonomía de Galicia y la estructura del poder gallego, en lo relativo a la posición jurídica y la responsabilidad política del Presidente de la Xunta de Galicia, ¿cual de las siguientes afirmaciones es constitucional y estatutariamente correcta?

- A. El Presidente de la Xunta es elegido por el Parlamento de Galicia de entre sus miembros, es nombrado por el Rey, ostenta la suprema representación de la Comunidad Autónoma y la ordinaria del Estado en Galicia, y responde políticamente ante el Parlamento de forma solidaria junto con los demás miembros de la Xunta.
- B. El Presidente de la Xunta es elegido por sufragio universal directo por todo el censo electoral gallego, siendo el Parlamento de Galicia un órgano de ratificación formal de sus Decretos Legislativos, careciendo este de capacidad para plantear una moción de censura.
- C. El nombramiento del Presidente de la Xunta corresponde en exclusiva al Presidente del Gobierno de la Nación de forma discrecional, debiendo ser obligatoriamente ratificado por el Pleno del Tribunal Superior de Xustiza de Galicia (TSXG) mediante un acto de juramento forzado.
- D. El Presidente de la Xunta ostenta la representación judicial de la Corona en el territorio autonómico, quedando eximido de cualquier control de constitucionalidad por parte del Tribunal Constitucional en las materias relativas al régimen local gallego.

### Respuesta

Esta es muy muy fácil y es la **A**. Es literalmente como se describe al Presidente de la Xunta. El resto son unas inventadas duras... xD

### Corrección

- **Tu respuesta**: **A**.
- **Feedback del Profesor**: ¡Al mentón! El artículo 15 y 16 del Estatuto definen exactamente este equilibrio institucional. El Presidente de la Xunta es el único que ostenta esa "doble representación" (suprema de la CC.AA. y ordinaria del Estado en el territorio) y su responsabilidad política es solidaria con sus conselleiros. Las otras opciones eran, como bien dices, inventos duros para rellenar espacio.

## Pregunta 2 (Desarrollo Corto) - Tema 7 (Ley 31/1995 - Prevención de Riesgos Laborales)

En el marco de la Ley de Prevención de Riesgos Laborales, el Artículo 21 regula una de las situaciones más críticas en el entorno de trabajo: el **riesgo grave e inminente**. Explique brevemente cuáles son las obligaciones urgentes que se imponen a la Administración (como empleador) y qué derecho de autoprotección drástico se le reconoce a los empleados públicos o a sus representantes legítimos si el peligro persiste.

### Respuesta

¡Buah! Esta parte sí que la tengo olvidada. Me acuerdo que el poner los medios de protección para los empleados es del empleador, y el derecho y deber de usarlos es de los empleados. Luego me acuerdo que había distintos grados de riesgos pero ahora mismo en blanco, por lo que voy a mirar y ver qué era realmente.

Según el artículo, el empleador tiene la obligación de facilitar todas las medidas posibles de seguridad sobre los empleados así como informarles de lo mismo; mientras que el empleado tiene derecho incluso a abandonar el espacio de trabajo si ante su conocimiento y medios lo considera necesario, pero con la obligación de comunicárselo a la empresa, donde si en el momento no le es posible, a posteriori. La empresa ha de hacer una evaluación de los riesgos y restaurar el estado laboral en 24 horas.

como resumen: el empleador tiene la obligación de adoptar las medidas necesarioas para garantizar la seguridad y la salud de los empleados y los trabajadores tienen el derecho a interrumpir la actividad cuando se valore un riesgo fuera de sus capacidades y recursos.

### Corrección

- **Tu respuesta**: El empleador debe informar y proteger; el trabajador tiene derecho a interrumpir y abandonar la actividad si hay peligro real.
- **Feedback del Profesor**: Excelente asimilación del **Artículo 21 de la LPRL**. Lo has resumido a la perfección.
- **El truco del tribunal**: Apúntate esto para tu gestor de tests, porque les encanta preguntarlo. El artículo 21 otorga el derecho de paralización no solo al trabajador individual, sino también a los **Representantes de los Trabajadores** (los Delegados de Prevención). Si el empresario no actúa, los delegados pueden acordar la paralización de la actividad por **mayoría de sus miembros**, comunicándolo de inmediato a la empresa y a la Autoridad Laboral.

# Parte II: Desarrollo, SQL y Automatización

## Pregunta 3 (Tipo Test) - Tema 14 y 15 (Bases de Datos - Integridad Referencial)

Al diseñar las tablas de la base de datos municipal del Concello de Ferrol, establecemos una relación de clave foránea (*Foreign Key*) entre la tabla `Contribuyentes` y la tabla `Vehiculos`. Si configuramos la restricción referencial con la cláusula `ON DELETE SET NULL`, ¿cuál será el comportamiento exacto del motor de la base de datos (SQL Server) si procedemos a borrar un registro de la tabla `Contribuyentes`?

- A. El motor detendrá la transacción inmediatamente lanzando un error severo de restricción, impidiendo el borrado del contribuyente mientras existan vehículos asociados a él en el sistema.
- B. El motor borrará el registro del contribuyente y, de forma automática, eliminará también de la tabla `Vehiculos` todas las filas que estuvieran vinculadas a ese contribuyente, provocando un borrado en cascada.
- C. El motor borrará el registro del contribuyente y, en las filas correspondientes de la tabla `Vehiculos`, modificará el campo que contenía el ID del contribuyente borrado asignándole el valor NULL, siempre y cuando dicha columna admita valores nulos por diseño.
- D. El motor marcará el registro del contribuyente como "inactivo" mediante un trigger oculto del sistema, bloqueando el acceso de lectura a los índices no agrupados de la tabla de forma indefinida.

### Respuesta

Sin mirar las respuestas, así de primeras, lo que determina que es dicha clave foránea puede ser nula permitiendo una eliminación donde los elementos que referencian al padre, en este caso, los Vehículos, pueden no ser de alguien quedando como nulos cuando el padre es eliminado por dicha premisa. Por tanto, la respuesta sería la **C**.

### Corrección

- **Tu respuesta**: **C**.
- **Feedback del Profesor**: Limpio y directo. `ON DELETE SET NULL` rompe el vínculo manteniendo los registros hijos vivos (los vehículos se quedan sin dueño en la base de datos). Para que esto funcione, la columna `id_contribuyente` en la tabla `Vehiculos` no puede estar marcada como `NOT NULL`. Dominas las restricciones de integridad referencial al dedillo.

## Pregunta 4 (Desarrollo Corto / Práctico) - Tema 35 (Scripts de Automatización)

Imagina que te piden un pequeño script de administración de sistemas para el Ayuntamiento. Escribe un script corto en **Python** o **Bash** que realice la siguiente tarea automatizada de mantenimiento técnico: Debe comprobar si existe el directorio físico `/var/log/concello/backup`. Si el directorio **no existe**, el script debe crearlo con los permisos correspondientes; si el directorio **sí existe**, debe escribir dentro de un archivo llamado `estado.log` una línea de texto que incluya la palabra "CHECK" acompañada de la fecha y hora actuales del sistema.

### Respuesta

Este Script no lo sabría hacer de memoria por lo que lo completaré pero marcaré qué partes son las que no sabría hacer.

```bash
#!/bin/bash

directorio=/var/log/concello/backup

if ! [ -d $directorio ];then 
    mkdir $directorio
    chmod -R PERMSISOS $directorio
fi

echo "CHECK $(date +"%Y-%m-%d %H:%M:%S")" >> $directorio/estado.log # Aquí tuve que buscar como poner la fecha.

```

```python

from os.path import exists
from os import mkdir, chmod
from io import IOFile
import datetime

directorio:str = "/var/log/concello/backup"
archivo:IOFile

if not exists(directorio):
    mkdir(directorio)
    chmod(directorio, 0oPERMISOS) # Aquí tuve que mirar como aplicar permisos.

with open(directorio + "/estado.log", "a+") as archivo:
    archivo.write("\nCHECK " + datetime.datetime.now().strftime("%Y/%m/%d %h:%i:%s")) # Aquí era demasiado cutre poner un Timestamp con `time.time` así que busqué como poner la fecha.

```

### Corrección

- **Tu respuesta**: Planteaste ambos scripts, pero cometiste el mismo error de flujo en los dos.
- **Feedback del Profesor**: ¡Mucho ojo con la comprensión lectora del enunciado! El examen decía: *"Si el directorio no existe, lo crea... **si el directorio sí existe**, escribe en el log"*. En tus dos scripts, el comando de escribir en el log se ejecuta **siempre** (está fuera del condicional), por lo que si el directorio no existía, tu script lo creaba y además escribía en el log. Te faltó el bloque else.

Además, en Python tuviste un fallo de sintaxis con las máscaras de tiempo de `strftime`: `%h` es el nombre abreviado del mes e `%i` no existe en Python (se usa `%M` para minutos y `%S` para segundos).

Aquí tienes la versión corregida que espera el tribunal:

```sh

# BASH CORRECTO
if [ ! -d "$directorio" ]; then 
    mkdir -p "$directorio"
    chmod 755 "$directorio"
else
    echo "CHECK $(date +'%Y-%m-%d %H:%M:%S')" >> "$directorio/estado.log"
fi

```

```py

# PYTHON CORRECTO
import os
from datetime import datetime

directorio = "/var/log/concello/backup"

if not os.path.exists(directorio):
    os.makedirs(directorio)
    os.chmod(directorio, 0o755)
else:
    with open(os.path.join(directorio, "estado.log"), "a") as archivo:
        archivo.write(f"CHECK {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}\n")

```

# Parte III: Gestión TIC y Monitorización

## Pregunta 5 (Tipo Test) - Tema 33 (Monitorización de Sistemas - Zabbix/Nagios)

En la infraestructura de servidores del Concello de Ferrol, al desplegar una herramienta de monitorización avanzada como **Zabbix**, ¿cuál es la diferencia conceptual y técnica fundamental entre realizar un monitoreo de infraestructura **basado en agentes** (*Agent-based*) frente a un monitoreo sin agentes (*Agentless*)?

- A. El monitoreo basado en agentes requiere instalar un software específico (Zabbix Agent) en el servidor objetivo, permitiendo una recolección de métricas internas muy detallada y optimizada mediante conexiones locales; mientras que el monitoreo sin agentes utiliza protocolos estándar ya existentes en el sistema operativo (como SNMP, WMI o comprobaciones ICMP/SSH) para extraer la información de forma remota sin instalar nada.
- B. El monitoreo basado en agentes solo es compatible con servidores virtuales desplegados en entornos de escritorio remoto VDI, mientras que el monitoreo sin agentes se limita al análisis de periféricos y hardware de almacenamiento físico externo (CPD).
- C. El monitoreo con agentes intercepta de forma nativa las consultas SQL para cifrarlas con algoritmos asimétricos, mientras que el monitoreo sin agentes es un requisito obligatorio impuesto por las directrices organizativas de ITIL únicamente para entornos de preproducción.
- D. Ambas técnicas realizan exactamente la misma llamada a nivel de kernel, pero el monitoreo con agentes consume todo el ancho de banda de la red interna al requerir una base de datos distribuida en cada puesto de usuario del Ayuntamiento.

### Respuesta

Esta es muy fácil y sería la **A**. Creo que Zabbix es Agentless y Nagios es Agent-based. La gran diferencia es el requerimento técnico que tiene que tener la máquina o máquinas monitoreadas donde el primer caso requiere de un túnel SSH u otros medios que igualmente, por seguridad han de implementarse; y en el de agente requiere de la instalación del agente en cuestión. En funcionamiento tenemos que el agente deja pasivo el servicio de monitoreo, siendo el propio agente la parte activa y el servidor de escucha; mientras que el Agentless es un servidor con monitoreo activo.

### Corrección

- **Tu respuesta**: **A**.
- **Feedback del Profesor**: Acertaste la opción del test porque define perfectamente la teoría de Agent-based vs Agentless. Sin embargo, en tu anotación pusiste: *"Zabbix es Agentless y Nagios es Agent-based"*. **¡Cuidado, que aquí te habrían cazado en una pregunta oral o de desarrollo!**

Zabbix es tremendamente famoso precisamente por la potencia de su **Zabbix Agent**. De hecho, permite los dos mundos de forma híbrida. Y lo más interesante (pregunta clásica de examen técnico): el agente de Zabbix puede trabajar en dos modos:

1. **Agente Pasivo (Server Check)**: El servidor central de Zabbix le pide el dato al agente (petición al puerto 10050) y el agente responde.
2. **Agente Activo (Agent Push)**: El agente se conecta al servidor (puerto 10051), le pide la lista de cosas que debe revisar, las analiza él solo de forma local y, cuando las tiene, se las envía en masa al servidor. Esto alivia drásticamente la carga de CPU del servidor central.