📝 SIMULADOR DE EXAMEN — 15 preguntas · sin pistas
⏱ 45:00
Cambiar la duración genera un examen nuevo.
1 case con rango de caracteres 🔀 N2 Completar
Completa el patrón para que coincida con cualquier letra minúscula.
#!/bin/bash case $C in ___) echo minuscula ;; [A-Z]) echo mayuscula ;; *) echo otro ;; esac
2 Leer showmount -e 🗄️ N3 interpretar_output
Salida de showmount -e 192.168.1.10:
Export list for 192.168.1.10:
/srv/datos   192.168.1.0/24
/srv/backup  192.168.1.50
¿A qué red o host está exportado /srv/datos?
3 Interpretar ss -tulpn — puerto en escucha 🌐 N2 interpretar_output
Salida de ss -tulpn:
Netid State  Recv-Q Send-Q Local Address:Port  Peer Address:Port Process
tcp   LISTEN 0      128    0.0.0.0:22         0.0.0.0:*        users:((sshd,pid=712))
tcp   LISTEN 0      511    0.0.0.0:80         0.0.0.0:*        users:((apache2,pid=842))
tcp   LISTEN 0      80     127.0.0.1:3306     0.0.0.0:*        users:((mysqld,pid=915))
¿En qué puerto está escuchando sshd?
4 if/elif a case — control de servicio 🧩 N2 Transformar
Transforma este if/elif/else a case. No uses if ni elif:
#!/bin/bash ACCION=$1 if [ "$ACCION" = "start" ]; then systemctl start nginx elif [ "$ACCION" = "stop" ]; then systemctl stop nginx elif [ "$ACCION" = "restart" ]; then systemctl restart nginx elif [ "$ACCION" = "status" ]; then systemctl status nginx else echo "Uso: $0 {start|stop|restart|status}" fi
5 Definir un recurso compartido 🔗 N2 Completar
Añade a smb.conf un recurso llamado [datos] que comparta /srv/datos, con escritura permitida, solo para el usuario ana.
[datos] path = ___ writable = ___ valid users = ___
6 Corregir if numérico: = vs -eq y fi 🧩 N2 Corregir
Este script tiene 3 errores (comparación numérica, cierre y comillas). Corrígelos:
#!/bin/bash INTENTOS=$1 if [ $INTENTOS = 3 ]; then echo "Cuenta bloqueada" elif [ "$INTENTOS" -gt 3 ]; then echo "Demasiados intentos" else echo "Intentos restantes"
7 Validar argumento obligatorio 🖥️ N3 Escribir código
Escribe un script que, si no recibe ningún argumento, muestre Uso: ... y salga con exit 1. Si lo recibe, lo muestra.
8 Combinado: menú con validación de entrada 🧩 N3 Escribir código
Escribe un script de menú que:
1. Repita con while
2. Lea la opción con read
3. Valide con if que la opción NO esté vacía (-z); si lo está, muestre aviso y use continue
4. Use case con ramas 1, 2 y la opción salir con break
9 ¿Qué imprime el bucle? 🖥️ N2 interpretar_output
Dado este fragmento:
for i in 1 2 3; do
  echo $((i*i))
done
¿Qué número se imprime en la última línea?
10 Targets como niveles de ejecución 🧱 N2 Opción múltiple
¿Qué comando muestra el target por defecto al que arranca el sistema (el equivalente moderno al runlevel)?
11 Corregir comparación de cadenas 🧩 N2 Corregir
Este script compara cadenas pero usa el operador equivocado. Tiene 2 errores:
#!/bin/bash MODO=$1 if [ $MODO -eq "produccion" ]; then echo "Entorno productivo" else echo "Entorno de pruebas" fi
12 Puertos y servicios con ss 🌐 N2 Opción múltiple
¿Qué comando muestra todos los puertos TCP en escucha (LISTEN) con el nombre del proceso que los usa?
13 Mayor de dos números 🖥️ N3 Escribir código
Escribe un script que reciba dos números ($1 y $2) y muestre el mayor.
14 Verificar la integridad 💾 N2 Completar
Verifica que los ficheros listados en backup.sha256 siguen íntegros (que sus hashes coinciden).
# Verificar contra los hashes guardados sha256sum ___ backup.sha256
15 Interpretar tail /var/log/syslog 📋 N2 interpretar_output
Últimas líneas de tail /var/log/syslog:
Jun 12 11:02:01 srv CRON[3187]: (root) CMD (/opt/backup.sh)
Jun 12 11:03:14 srv sshd[712]: Failed password for invalid user admin from 10.0.0.5
Jun 12 11:03:20 srv kernel: Out of memory: Killed process 915 (mysqld)
¿Qué servicio registró el intento fallido de contraseña?
✕ Salir