Crear cuenta
Examen oficial · A2

Segundo ejercicio, apartado B - Programador/a, Grupo II (Universidad de Oviedo, 2024)

Universidad de Oviedo

20 abril 202422 ejercicios de desarrolloA2Ejercicio

Ejercicios de desarrollo

Este examen es de desarrollo: se puede consultar y estudiar, pero no tiene corrección automática.

22 preguntas o ejercicios de desarrollo. No tienen corrección automática ni cuentan para la nota. Se muestra la solución solo si el tribunal la publicó.

  • 22 con respuesta oficial
  1. Supuesto 1: Ejercicio 1 (puntuación máxima: 2 puntos)

    Dado un sistema Debian Linux, se supone implementado un sistema de respaldo mediante la utilización de la aplicación rsync.
    Para el almacenaje del histórico de respaldos se utiliza el software rsnapshot, que realiza y gestiona copias etiquetadas temporalmente y es capaz de utilizar enlaces duros a nivel del sistema operativo para deduplicar el almacenaje cuando el fichero ya ha sido almacenado.
    Este sistema también utiliza el gestor de tareas periódicas del sistema Cron (sintaxis 5 posiciones) para la ejecución de todos los elementos implicados.
    Suponiendo que el sistema funciona correctamente, que los ficheros de configuración relacionados omitidos son todos correctos para la ejecución esperable y dados los siguientes archivos de configuración y scripts; conteste a las preguntas:
    /etc/cron.d/backup
    PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin MAILTO=respaldo@uniovi.es 00 02 * * * root /usr/local/sbin/rsync.sh 30 00 * * * root XXXX-2-XXXX /var/log/ -type f -name \*.log -mtime +3 -print0 | xargs --no-run-if-empty -0 gzip -- 30 00 * * * root /usr/local/sbin/otrastareascomplementarias.sh 40 08 * * * root /usr/local/sbin/rsnapshot.sh sync && /usr/local/sbin/rsnapshot.sh daily | ts "[\%Y-\%m-\%dT\%H:\%M:\%S]" >> /var/log/rsnapshot.log 00 05 * * 7 root /usr/local/sbin/rsnapshot.sh weekly| ts "[\%Y-\%m-\%dT\%H:\%M:\%S]" >> /var/log/rsnapshot.log 00 04 1 * * root /usr/local/sbin/rsnapshot.sh monthly| ts "[\%Y-\%m-\%dT\%H:\%M:\%S]" >> /var/log/rsnapshot.log XXXX-1-XXXX root /usr/local/sbin/rsnapshot.sh yearly| ts "[\%Y-\%m-\%dT\%H:\%M:\%S]" >> /var/log/rsnapshot.log/usr/local/sbin/rsync.sh#!/bin/bash SOURCE_DIR="root@uniovi.es:/srv/nfs/*" DEST_DIR="/srv/nfs/almacen" LOG_FILE="/var/log/rsync_backup_$(/bin/date +\%Y-\%m-\%d_\%Hh\%Mm\%Ss).log" SSH_IDENTITY_FILE="/root/.ssh/respaldo@uniovi.es" RSYNC_OPTIONS=" --archive --exclude=*.bak --human-readable --dry-run --stats" RSYNC_OPTIONS+=" --itemize-changes --quiet --compress --numeric-ids --XXXX-3-XXXX" RSYNC_OPTIONS+=" --rsh=\"ssh -o StrictHostKeyChecking=no -o PasswordAuthentication=no -i $SSH_IDENTITY_FILE\"" rsync $RSYNC_OPTIONS $SOURCE_DIR $DEST_DIR >> $LOG_FILE/usr/local/sbin/rsnapshot.sh#!/bin/bash if [ "$#" -ne 1 ]; then echo "Uso: $0 <tipo>" exit 1 fi SNAPSHOT_CONF="/etc/local/rsnapshot.conf" LOG_FILE="/var/log/rsnapshot.log" TIPO="$1" echo "$(date) - Ejecución de Rsnapshot para $TIPO" >> $LOG_FILE rsnapshot -c $SNAPSHOT_CONF $TIPO find /var/log -name "rsnapshot*.log.gz" -mtime +90 -exec rm {} \;Cada una de estas preguntas se valora con un máximo de 0,5 puntos.

    Ejercicio 1 · Apartado a). Respecto al archivo de configuración Cron /etc/cron.d/backup, ¿qué expresión debe ir en el texto omitido etiquetado como XXXX-1-XXXX, si se desea que se ejecuten las copias anuales el 1 de enero a las 3 de la mañana?

    Informática y Ofimática Puntuación máxima: 0,500

    Ver respuesta oficial

    00 03 1 1 *

    Fuente: https://www.uniovi.es/documents/39158/3499168/SKM_C36824042213020.pdf/5d5145a7-44e6-a76a-e5cc-2f8d9766848a?t=1713783182799#page=4

  2. Ejercicio 1 · Apartado b). Respecto al archivo de configuración Cron /etc/cron.d/backup, ¿qué comando (no es necesario el path) debe ir en el texto omitido etiquetado como XXXX-2-XXXX, si lo que se desea es comprimir los archivos de log de más de tres días?

    Informática y Ofimática Puntuación máxima: 0,500

    Ver respuesta oficial

    find

    Fuente: https://www.uniovi.es/documents/39158/3499168/SKM_C36824042213020.pdf/5d5145a7-44e6-a76a-e5cc-2f8d9766848a?t=1713783182799#page=4

  3. Ejercicio 1 · Apartado c). Respecto al script /usr/local/sbin/rsync.sh se ha detectado un error en el mismo. Parece que las copias diarias que el rsync genera no se materializan y dejan el destino vacío. Los logs indican que se ejecuta sin problema, que no hay errores de permisos de escritura y que a las ejecuciones del rsnapshot son exitosas. Parece que hay un error en los parámetros de ejecución del rsync. ¿Que parámetro de ejecución del rsync almacenado en RSYNC_OPTIONS sobra para que se materialice la copia del rsync?

    Informática y Ofimática Puntuación máxima: 0,500

    Ver respuesta oficial

    --dry-run

    Fuente: https://www.uniovi.es/documents/39158/3499168/SKM_C36824042213020.pdf/5d5145a7-44e6-a76a-e5cc-2f8d9766848a?t=1713783182799#page=4

  4. Ejercicio 1 · Apartado d). Respecto al script /usr/local/sbin/rsync.sh, después de solucionado el anterior problema se ha detectado otro error en el mismo. Parece que las copias diarias que el rsync genera no son correctas. El rsnapshot está almacenando acumulativamente archivos que fueron eliminados días anteriores en el sistema original en los backups etiquetados con días posteriores a su eliminación. ¿Qué parámetro debe ir en el texto omitido etiquetado como XXXX-3-XXXX para solucionar este problema?

    Informática y Ofimática Puntuación máxima: 0,500

    Ver respuesta oficial

    --delete (--del,--delete-before,--delete-during,--delete-delay ,--delete-after)

    Fuente: https://www.uniovi.es/documents/39158/3499168/SKM_C36824042213020.pdf/5d5145a7-44e6-a76a-e5cc-2f8d9766848a?t=1713783182799#page=5

  5. Supuesto 2: Ejercicio 2 (puntuación máxima: 2 puntos)

    Dado el siguiente script bash completo y funcional sobre tareas de gestión en un entorno XenServer y las consideraciones indicadas, conteste a las preguntas:#!/bin/bash sr_uuid="83d997e5-e41f-2d8e-13c3-f59cd03cd00b" vm_name="NuevaMaquinaVirtual" snapshot_prefix="Snapshot" export_path="/run/sr-mount/eb003930-51e7-6c23-5803-37273266ef5d" vm_uuid=$(xe vm-install template=b58990e0-367b-9b82-4503-1f12c454871e new-name-label=$vm_name sr-uuid=$sr_uuid) vdi1_uuid=$(xe vdi-create sr-uuid=$sr_uuid name-label="Disco1" virtual-size=1GiB) vdi2_uuid=$(xe vdi-create sr-uuid=$sr_uuid name-label="Disco2" virtual-size=1GiB) xe vbd-create vm-uuid=$vm_uuid device=1 vdi-uuid=$vdi1_uuid xe vbd-create vm-uuid=$vm_uuid device=2 vdi-uuid=$vdi2_uuid for ((i=1; i<=3; i++)); do snapshot_name="$snapshot_prefix$i" xe vm-snapshot vm=$vm_name new-name-label=$snapshot_name if [ $i -lt 3 ]; then sleep 300 fi done xe vm-start vm=$vm_uuid sleep 150 xe vm-suspend vm=$vm_uuid xe vm-export vm=$vm_name filename="$export_path/exportada1.xva" xe vm-export vm=$vm_name filename="$export_path/exportada2.xva" existing_vm_name=$(xe vm-import filename="$export_path/exportada1.xva" sr-uuid=$sr_uuid new-name-label="Exportada1" --minimal) xe vm-import filename="$export_path/exportada2.xva" sr-uuid=$sr_uuid new-name-label="exportada2" sleep 150 xe vm-start vm=$existing_vm_name new_vm_name="ReNewNuevaMaquinaVirtual" snapshot_uuid=$(xe snapshot-list name-label="Snapshot1" --minimal) new_uuid=$(xe vm-copy new-name-label=$new_vm_name uuid=$snapshot_uuid) xe template-param-set is-a-template=false uuid=$new_uuid xe vm-start vm=$new_vm_name vbd_uuid=$(xe vbd-list vm-name-label=$new_vm_name params=uuid --minimal | tr ',' '\n' | tail -n 1) xe vbd-unplug uuid=$vbd_uuid sleep 150 xe vm-suspend vm=$existing_vm_name XXX-1-XXX=$(xe vm-list --minimal | tr ',' '\n' | wc -l) XXX-2-XXX=$(xe vm-list power-state=running --minimal | tr ',' '\n' | wc -l) XXX-3-XXX=$(xe vdi-list sr-uuid=$sr_uuid --minimal | tr ',' '\n' | wc -l)Consideraciones a tener en cuenta sobre el entorno Xen: • No dispone de ninguna otra VM adicional precreada. • El SR de la variable sr_uuid esta vacío. • El espacio creado por defecto para los snapshots es el mismo SR, pero las imágenes generadas para la suspensión se almacenan en otro espacio diferente. • El template solo lleva un disco montado.
    Cada una de estas preguntas se valora con un máximo de 0,5 puntos.

    Ejercicio 2 · Apartado a). ¿Cuál es el valor de la variable XXX-1-XXX al finalizar el código?

    Informática y Ofimática Puntuación máxima: 0,500

    Ver respuesta oficial

    4

    Fuente: https://www.uniovi.es/documents/39158/3499168/SKM_C36824042213020.pdf/5d5145a7-44e6-a76a-e5cc-2f8d9766848a?t=1713783182799#page=7

  6. Ejercicio 2 · Apartado b). ¿Cuál es el valor de la variable XXX-2-XXX al finalizar el código?

    Informática y Ofimática Puntuación máxima: 0,500

    Ver respuesta oficial

    1

    Fuente: https://www.uniovi.es/documents/39158/3499168/SKM_C36824042213020.pdf/5d5145a7-44e6-a76a-e5cc-2f8d9766848a?t=1713783182799#page=7

  7. Ejercicio 2 · Apartado c). ¿Cuál es el valor de la variable XXX-3-XXX al finalizar el código?

    Informática y Ofimática Puntuación máxima: 0,500

    Ver respuesta oficial

    21

    Fuente: https://www.uniovi.es/documents/39158/3499168/SKM_C36824042213020.pdf/5d5145a7-44e6-a76a-e5cc-2f8d9766848a?t=1713783182799#page=7

  8. Ejercicio 2 · Apartado d). ¿Cómo se hace un shutdown forzado de la máquina almacenada en la variable existing_vm_name?

    Informática y Ofimática Puntuación máxima: 0,500

    Ver respuesta oficial

    xe vm-shutdown vm=$existing_vm_name force=true

    Fuente: https://www.uniovi.es/documents/39158/3499168/SKM_C36824042213020.pdf/5d5145a7-44e6-a76a-e5cc-2f8d9766848a?t=1713783182799#page=7

  9. Ejercicio 3 · Apartado a). Utilizando Docker CLI cree y arranque un contenedor de nombre busybox, añadiendo la opción necesaria para que se elimine automáticamente cuando se salga del mismo. (0,5 puntos)

    Informática y Ofimática Puntuación máxima: 0,500

    Ver respuesta oficial

    docker run --rm busybox

    Fuente: https://www.uniovi.es/documents/39158/3499168/SKM_C36824042213020.pdf/5d5145a7-44e6-a76a-e5cc-2f8d9766848a?t=1713783182799#page=8

  10. Ejercicio 3 · Apartado b). Utilizando Docker CLI cree y arranque en segundo plano (detached mode) un contenedor de nombre mysql y versión 5.7, en el que se monte un volumen mapeando el directorio local /home/custom al directorio remoto /etc/mysql/conf.d. (0,5 puntos)

    Informática y Ofimática Puntuación máxima: 0,500

    Ver respuesta oficial

    docker run -v /home/custom:/etc/mysql/conf.d -d mysql:5.7

    Fuente: https://www.uniovi.es/documents/39158/3499168/SKM_C36824042213020.pdf/5d5145a7-44e6-a76a-e5cc-2f8d9766848a?t=1713783182799#page=8

  11. Ejercicio 3 · Apartado c). Existe un fichero docker-compose.yml, que se encuentra en el path de ejecución, que define dos contenedores: frontend y backend. Indique la orden docker-compose correspondiente para realizar las siguientes tareas. Se debe utilizar el modo de ejecución en segundo plano (detached mode): I. Desplegar por completo la arquitectura configurada en el fichero docker-compose.yml. II. Escalar el contenedor backend para que ejecute 3 instancias del mismo. III. Desescalar el contenedor backend para que ejecute una única instancia. IV. Detener los servicios de la arquitectura definida en docker-compose.yml. (0,5 puntos)

    Informática y Ofimática Puntuación máxima: 0,500

    Ver respuesta oficial

    docker-compose up -d
    docker-compose up -d --scale backend=3
    docker-compose up -d --scale backend=1
    docker-compose down

    Fuente: https://www.uniovi.es/documents/39158/3499168/SKM_C36824042213020.pdf/5d5145a7-44e6-a76a-e5cc-2f8d9766848a?t=1713783182799#page=8

  12. Ejercicio 3 · Apartado d). Complete el siguiente fichero docker-compose.yml para que: I. Se utilice la última versión de la imagen example/webapp. II. Se mapee el puerto local 443 en el puerto del contenedor 8443.services: frontend: image: example/webapp volumes: - db-data:/etc/dataEscriba el fichero completo en el cuadro inferior. (0,5 puntos)

    Informática y Ofimática Puntuación máxima: 0,500

    Ver respuesta oficial

    Fichero docker-compose.yml completo:services: frontend: image: example/webapp:latest ports: - “443:8443” volumes: - db-data:/etc/data

    Fuente: https://www.uniovi.es/documents/39158/3499168/SKM_C36824042213020.pdf/5d5145a7-44e6-a76a-e5cc-2f8d9766848a?t=1713783182799#page=9

  13. Supuesto 4: Ejercicio 4 (puntuación máxima: 2 puntos)

    Dado el siguiente fichero de configuración de Apache 2.4 HTTP Server, responda a las siguientes preguntas:<VirtualHost *:80> ServerName uniovi.es ServerAdmin webmaster@uniovi.es DocumentRoot /var/www/uniovi.es/public_html ErrorLog ${APACHE_LOG_DIR}/error_ejemplo.log CustomLog ${APACHE_LOG_DIR}/access_ejemplo.log combined <Directory /var/www/uniovi.es/public_html> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory> <Location /admin> AuthType Basic AuthName "Restricted Access" AuthUserFile /etc/apache2/.htpasswd Require valid-user </Location> </VirtualHost> <VirtualHost *:80> ServerName uniovi.com ServerAdmin webmaster@uniovi.com DocumentRoot /var/www/uniovi.com/public_html ErrorLog ${APACHE_LOG_DIR}/error_ejemplo2.log CustomLog ${APACHE_LOG_DIR}/access_ejemplo2.log combined <Directory /var/www/uniovi.com/public_html> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory> <Location /admin> AuthType Basic AuthName "Restricted Access" AuthUserFile /etc/apache2/.htpasswd Require valid-user </Location> <Location /private> Options Indexes FollowSymLinks AuthType Basic AuthName "Restricted Access" AuthUserFile /etc/apache2/.htpasswd_private Require valid-user ## XXXXXX </Location> </VirtualHost> <VirtualHost *:443> ServerName uniovi.es ServerAdmin webmaster@uniovi.es DocumentRoot /var/www/uniovi.es/secure_html ErrorLog ${APACHE_LOG_DIR}/error_ejemplo_ssl.log CustomLog ${APACHE_LOG_DIR}/access_ejemplo_ssl.log combined SSLEngine on SSLProtocol +all -SSLv2 +TLSv1.1 ## XXXXXX SSLCertificateFile /etc/apache2/ssl/uniovi.es.crt SSLCertificateKeyFile /etc/apache2/ssl/uniovi.es.key <Directory /var/www/uniovi.es/secure_html> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory> </VirtualHost>Cada una de estas preguntas se valora con un máximo de 0,4 puntos.

    Ejercicio 4 · Apartado a). ¿Cuál es el directorio raíz del sitio web configurado para uniovi.es por HTTP?

    Informática y Ofimática Puntuación máxima: 0,400

    Ver respuesta oficial

    /var/www/uniovi.es/public_html

    Fuente: https://www.uniovi.es/documents/39158/3499168/SKM_C36824042213020.pdf/5d5145a7-44e6-a76a-e5cc-2f8d9766848a?t=1713783182799#page=11

  14. Ejercicio 4 · Apartado b). ¿Qué archivo se utilizará para autenticar usuarios para acceder a la ubicación "/admin" en el sitio de uniovi.com?

    Informática y Ofimática Puntuación máxima: 0,400

    Ver respuesta oficial

    /etc/apache2/.htpasswd

    Fuente: https://www.uniovi.es/documents/39158/3499168/SKM_C36824042213020.pdf/5d5145a7-44e6-a76a-e5cc-2f8d9766848a?t=1713783182799#page=11

  15. Ejercicio 4 · Apartado c). ¿Cuál es el directorio raíz del sitio web configurado para uniovi.es cuando se accede a través de HTTPS?

    Informática y Ofimática Puntuación máxima: 0,400

    Ver respuesta oficial

    /var/www/uniovi.es/secure_html

    Fuente: https://www.uniovi.es/documents/39158/3499168/SKM_C36824042213020.pdf/5d5145a7-44e6-a76a-e5cc-2f8d9766848a?t=1713783182799#page=11

  16. Ejercicio 4 · Apartado d). ¿Por qué línea habría que sustituir completamente la línea 43, para que solo se permitiesen acceder a ese path los equipos de la subred 192.168.1.0/24?

    Informática y Ofimática Puntuación máxima: 0,400

    Ver respuesta oficial

    Require ip 192.168.1.0/24

    Fuente: https://www.uniovi.es/documents/39158/3499168/SKM_C36824042213020.pdf/5d5145a7-44e6-a76a-e5cc-2f8d9766848a?t=1713783182799#page=11

  17. Ejercicio 4 · Apartado e). ¿Por qué línea habría que sustituir completamente la línea número 54, para que solamente se permitiese acceder mediante el protocolo TLS versión 1.2?

    Informática y Ofimática Puntuación máxima: 0,400

    Ver respuesta oficial

    SSLProtocol -all +TLSv1.2

    Fuente: https://www.uniovi.es/documents/39158/3499168/SKM_C36824042213020.pdf/5d5145a7-44e6-a76a-e5cc-2f8d9766848a?t=1713783182799#page=12

  18. Supuesto 5: Ejercicio 5 (puntuación máxima: 2 puntos)

    Dado el siguiente fichero server.xml de configuración de Tomcat, responda a las siguientes preguntas:<?xml version="1.0" encoding="UTF-8"?> <Server port="8005" shutdown="SHUTDOWN"> <Listener className="org.apache.catalina.startup.VersionLoggerListener" /> <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" /> <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" /> <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" /> <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" /> <GlobalNamingResources> <Resource name="UserDatabase" auth="Container" type="org.apache.catalina.UserDatabase" description="User database that can be updated and saved" factory="org.apache.catalina.users.MemoryUserDatabaseFactory" pathname="conf/tomcat-users.xml" /> </GlobalNamingResources> <Service name="Catalina"> <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" maxParameterCount="1000" /> <Engine name="Catalina" defaultHost="localhost"> <Realm className="org.apache.catalina.realm.LockOutRealm"> <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/> </Realm> <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log" suffix=".txt" pattern="%h %l %u %t &quot;%r&quot; %s %b" /> </Host> </Engine> </Service> </Server>Cada una de estas preguntas se valora con un máximo de 0,4 puntos.

    Ejercicio 5 · Apartado a). ¿Los elementos y atributos definidos en el server.xml son sensibles a mayúsculas y minúsculas? Responda sí o no.

    Informática y Ofimática Puntuación máxima: 0,400

    Ver respuesta oficial

    Sí

    Fuente: https://www.uniovi.es/documents/39158/3499168/SKM_C36824042213020.pdf/5d5145a7-44e6-a76a-e5cc-2f8d9766848a?t=1713783182799#page=14

  19. Ejercicio 5 · Apartado b). ¿Cuál es el elemento de mayor nivel para la instancia Tomcat en el fichero server.xml?

    Informática y Ofimática Puntuación máxima: 0,400

    Ver respuesta oficial

    <server>

    Fuente: https://www.uniovi.es/documents/39158/3499168/SKM_C36824042213020.pdf/5d5145a7-44e6-a76a-e5cc-2f8d9766848a?t=1713783182799#page=14

  20. Ejercicio 5 · Apartado c). ¿El elemento <server> puede ser configurado como hijo de algún otro elemento? Responda sí o no.

    Informática y Ofimática Puntuación máxima: 0,400

    Ver respuesta oficial

    No

    Fuente: https://www.uniovi.es/documents/39158/3499168/SKM_C36824042213020.pdf/5d5145a7-44e6-a76a-e5cc-2f8d9766848a?t=1713783182799#page=14

  21. Ejercicio 5 · Apartado d). Según el fichero de configuración anterior, ¿a través de qué puerto se realiza el apagado de Tomcat?

    Informática y Ofimática Puntuación máxima: 0,400

    Ver respuesta oficial

    8005

    Fuente: https://www.uniovi.es/documents/39158/3499168/SKM_C36824042213020.pdf/5d5145a7-44e6-a76a-e5cc-2f8d9766848a?t=1713783182799#page=14

  22. Ejercicio 5 · Apartado e). ¿Qué listener de los definidos en el server.xml anterior activa los recursos globales y hace posible el uso de JNDI (Java Naming and Directory Interface) para acceder recursos con nombres comprensibles?

    Informática y Ofimática Puntuación máxima: 0,400

    Ver respuesta oficial

    GlobalResourcesLifecycleListener

    Fuente: https://www.uniovi.es/documents/39158/3499168/SKM_C36824042213020.pdf/5d5145a7-44e6-a76a-e5cc-2f8d9766848a?t=1713783182799#page=14

Fuentes oficiales

Universidad de Oviedo: acuerdo que publica la «plantilla de respuestas correctas» del segundo ejercicio, apartado B, con el cuestionario. Respuestas orientativas según la Comisión.

Más exámenes de Programador

Ver todos