← TeorĂ­a

Practica 11: Diagnostico de Equipos con la Terminal de Ubuntu

Modulo: MF0219_2 - Instalacion y Configuracion de Sistemas Operativos
Unidad Formativa: UF0853 - Explotacion de las funcionalidades del sistema microinformatico
Bloque: Diagnostico y reparacion de equipos desde la linea de comandos
Duracion estimada: 5 horas (1 sesion)
Modalidad: Trabajo individual
Herramientas: Oracle VirtualBox + VM con Ubuntu instalado (Practica 07)
Nota: Esta practica requiere tener completada la Practica 09 (Explorando Ubuntu). Trabajaras sobre la misma maquina virtual. Abre la terminal con Ctrl+Alt+T.
Escenario: Trabajas como tecnico de soporte Linux en una empresa. Te llega un equipo con Ubuntu que presenta problemas: el usuario reporta "va lento, se queda sin espacio y a veces pierde la conexion de red". Tu mision es diagnosticar el equipo desde la terminal, identificar el hardware, comprobar el estado de los discos, verificar la red y generar un informe completo.

Objetivos de la practica

  • Identificar todo el hardware de un equipo Linux sin abrirlo (CPU, RAM, disco, placa base, perifericos).
  • Utilizar dmesg y los logs del sistema para detectar errores de hardware.
  • Analizar el estado de los discos: particiones, espacio, salud S.M.A.R.T.
  • Diagnosticar problemas de conectividad de red paso a paso.
  • Gestionar servicios de hardware con systemctl.
  • Crear un script Bash de diagnostico automatizado para el taller.

Requisitos previos

Requisito OK
Practica 09 (Explorando Ubuntu) completada
Maquina virtual con Ubuntu funcionando
Conexion a Internet disponible en la VM

Preparacion: instalar herramientas de diagnostico

Antes de empezar, instala las herramientas que usaremos:

  1. sudo apt update
  2. sudo apt install smartmontools net-tools traceroute lshw inxi -y

Parte 1 - Inventario de hardware desde la terminal (40 min)

En Linux, existen comandos muy potentes para identificar todo el hardware de un equipo sin necesidad de abrirlo. Esto es esencial cuando recibes un equipo en el taller y necesitas saber con que estas trabajando.

Resumen rapido con inxi

Comando Resultado
inxi -Fxz
En un taller real: inxi -Fxz es el comando mas rapido para tener un resumen completo del equipo. La opcion -z oculta datos sensibles (MAC, serial) por privacidad.

Procesador (CPU)

Comando Que identifica Resultado
lscpu | grep -i "model name\|socket\|core\|thread\|mhz\|architecture" CPU: modelo, nucleos, hilos, velocidad
cat /proc/cpuinfo | grep "model name" | head -1 Nombre exacto del procesador

Memoria RAM

Comando Resultado
free -h
sudo dmidecode -t memory | grep -i "size\|speed\|manufacturer\|type:" | head -10

Placa base y BIOS

Comando Resultado
sudo dmidecode -t baseboard | grep -i "manufacturer\|product\|serial"
sudo dmidecode -t bios | grep -i "vendor\|version\|release"

Dispositivos PCI y USB (tarjetas y perifericos)

Comando Que identifica Resultado
lspci Dispositivos PCI (grafica, red, audio, etc.)
lspci | grep -i "vga\|3d\|display" Tarjeta grafica
lspci | grep -i "network\|ethernet\|wifi" Tarjeta(s) de red
lspci | grep -i "audio" Tarjeta de sonido
lsusb Dispositivos USB conectados

Ficha tecnica del equipo

Con los datos obtenidos, completa esta ficha tecnica del taller:

Componente Datos del equipo
Placa base (fabricante / modelo)
BIOS (version)
CPU (modelo, nucleos, velocidad)
RAM (cantidad, tipo, velocidad)
Tarjeta grafica
Tarjeta de red
Tarjeta de sonido
Sistema operativo y kernel

Captura 1: Terminal con inventario de hardware (inxi o lspci + lscpu)

📷

Pega una captura (Ctrl+V) o arrastra una imagen aqui

Captura con comandos de inventario de hardware

Preview

Parte 2 - Logs del sistema y deteccion de errores de hardware (30 min)

Cuando un equipo tiene problemas intermitentes (cuelgues, reinicios, perifericos que no funcionan), los logs del sistema son la clave para encontrar la causa. En Linux, el kernel registra todo lo que ocurre con el hardware.

dmesg - Mensajes del kernel

Comando Resultado
dmesg | grep -i "error" | tail -10
dmesg | grep -i "fail" | tail -5
dmesg | grep -i "usb" | tail -10
dmesg | grep -i "ata\|sata\|disk\|sda" | tail -10
dmesg | grep -i "eth\|enp\|wlan\|network" | tail -10
En un taller real: Si un equipo se reinicia solo, busca errores con dmesg | grep -i "error\|fail\|panic". Si un USB no funciona, busca dmesg | grep -i usb. Si el disco da problemas, busca dmesg | grep -i "ata\|i/o error".

Logs del sistema con journalctl

Comando Resultado
journalctl -p err -b --no-pager | tail -10
journalctl -p err -b --no-pager | wc -l
journalctl --list-boots

Has encontrado errores en los logs? Si es asi, describe el mas relevante. Si no hay errores, que indica eso sobre el estado del equipo?

Captura 2: Terminal mostrando logs del sistema (dmesg o journalctl)

📷

Pega una captura (Ctrl+V) o arrastra una imagen aqui

Captura de dmesg o journalctl con logs del sistema

Preview

Parte 3 - Diagnostico de discos y almacenamiento (40 min)

Escenario: El usuario reporta que "se le llena el disco y le aparecen errores". Vamos a analizar las particiones, el espacio disponible, que carpetas ocupan mas y el estado de salud del disco.

Particiones y espacio en disco

Comando Que analiza Resultado
lsblk -f Discos, particiones y sistema de ficheros
df -h Espacio usado/libre por particion
sudo fdisk -l 2>/dev/null | grep "Disk\|/dev/" Tamano fisico del disco y particiones

Donde se gasta el espacio?

Comando Resultado
sudo du -sh /var/log /tmp /home /var/cache 2>/dev/null
sudo du -h /var/log | sort -rh | head -5
sudo find / -type f -size +50M 2>/dev/null | head -10

Salud del disco con S.M.A.R.T.

S.M.A.R.T. (Self-Monitoring, Analysis and Reporting Technology) es un sistema de auto-diagnostico integrado en los discos duros y SSD. Permite predecir fallos antes de que ocurran.

Comando Resultado
sudo smartctl -i /dev/sda
sudo smartctl -H /dev/sda
En un taller real: Si S.M.A.R.T. reporta FAILED, el disco esta a punto de fallar y hay que hacer copia de seguridad inmediata y reemplazarlo. En VirtualBox, los discos virtuales suelen reportar "PASSED" o no soportar S.M.A.R.T.

Limpieza de espacio (como lo haria un tecnico)

Comando de limpieza Que limpia Espacio liberado
sudo apt clean Cache de paquetes descargados
sudo apt autoremove -y Paquetes huerfanos
sudo journalctl --vacuum-size=50M Logs antiguos (deja solo 50MB)

Captura 3: Diagnostico de discos (lsblk, df -h, smartctl)

📷

Pega una captura (Ctrl+V) o arrastra una imagen aqui

Captura con diagnostico de discos

Preview

Parte 4 - Diagnostico de problemas de red (40 min)

Escenario: El usuario dice que "a veces se le cae Internet". Vamos a realizar un diagnostico sistematico de la red, igual que hicimos en Windows pero con los comandos equivalentes de Linux.

Paso 1: Identificar la configuracion de red

Comando Resultado
ip addr show
ip route show
cat /etc/resolv.conf

Extrae estos datos:

Dato Valor Es correcto?
Interfaz de red activa
Direccion IP
Puerta de enlace
DNS

Paso 2: Probar conectividad por capas (igual que en Windows)

Comando Que probamos Resultado
ping -c 4 127.0.0.1 Pila TCP/IP local
ping -c 4 [tu gateway] Conexion al router
ping -c 4 8.8.8.8 Internet (sin DNS)
ping -c 4 www.google.es Internet + DNS

Paso 3: Trazar ruta y consultar DNS

Comando Resultado
traceroute 8.8.8.8
nslookup www.google.es
ss -tuln

Equivalencia de comandos de red Linux - Windows

Linux Windows equivalente Funcion
ip addr show Ver configuracion de red
ping -c 4 Probar conectividad
traceroute Trazar ruta
ss -tuln Ver puertos en escucha

Captura 4: Diagnostico de red (ping, traceroute, ss)

📷

Pega una captura (Ctrl+V) o arrastra una imagen aqui

Captura con diagnostico de red

Preview

Parte 5 - Servicios de hardware y monitorizacion del rendimiento (30 min)

Escenario: El equipo "va lento". Necesitamos comprobar que servicios estan consumiendo recursos, si hay algun proceso acaparando CPU o RAM, y verificar que los servicios criticos de hardware funcionan correctamente.

Servicios de hardware con systemctl

Comando Resultado
systemctl status NetworkManager
systemctl status systemd-udevd
systemctl status cups 2>/dev/null || echo "No instalado"
systemctl list-units --type=service --state=failed
En un taller real: Si hay servicios en estado failed, eso puede explicar por que algo no funciona. Por ejemplo, si NetworkManager esta fallado, no habra red. Si cups esta fallado, no podra imprimir.

Monitorizacion del rendimiento

Comando Que analiza Resultado
uptime Tiempo encendido y carga
free -h RAM en uso
ps aux --sort=-%mem | head -6 Top 5 procesos por RAM
ps aux --sort=-%cpu | head -6 Top 5 procesos por CPU
cat /proc/loadavg Carga del sistema (1, 5, 15 min)
Interpretacion del load average: Los 3 numeros representan la carga media del ultimo 1, 5 y 15 minutos. Si el valor supera el numero de nucleos del CPU, el equipo esta sobrecargado. Ejemplo: con 2 nucleos, un load average de 2.5 indica sobrecarga.

Tiempo de arranque (diagnostico de arranque lento)

Comando Resultado
systemd-analyze
systemd-analyze blame | head -10

Captura 5: Monitorizacion de rendimiento y servicios

📷

Pega una captura (Ctrl+V) o arrastra una imagen aqui

Captura con rendimiento y/o servicios del sistema

Preview

Parte 6 - Script de diagnostico automatizado para el taller (40 min)

Igual que hicimos en Windows, vamos a crear un script Bash que ejecute todo el diagnostico automaticamente y genere un informe. Este tipo de scripts son herramientas reales que los tecnicos usan en su dia a dia.

Script: Diagnostico completo del equipo Linux

  1. Crea el archivo: nano ~/diagnostico_equipo.sh
  2. Escribe el siguiente codigo:
#!/bin/bash
# ==========================================
# Script de diagnostico de equipos - Taller
# Curso IFCT0309 - Montaje y Reparacion
# ==========================================

FECHA=$(date "+%d/%m/%Y %H:%M:%S")
INFORME="$HOME/diagnostico_$(hostname)_$(date +%Y%m%d).txt"

mostrar() {
    echo "$1" | tee -a "$INFORME"
}

mostrar "=========================================="
mostrar "  INFORME DE DIAGNOSTICO DE EQUIPO"
mostrar "  Fecha: $FECHA"
mostrar "  Tecnico: $(whoami) @ $(hostname)"
mostrar "=========================================="

mostrar ""
mostrar "=== 1. PROCESADOR ==="
lscpu | grep -i "model name\|core\|thread\|mhz" | tee -a "$INFORME"

mostrar ""
mostrar "=== 2. MEMORIA RAM ==="
free -h | grep -i "mem\|swap" | tee -a "$INFORME"

mostrar ""
mostrar "=== 3. DISCOS Y PARTICIONES ==="
lsblk -f | tee -a "$INFORME"
mostrar ""
df -h / | tail -1 | tee -a "$INFORME"

mostrar ""
mostrar "=== 4. TARJETA GRAFICA ==="
lspci | grep -i "vga\|3d\|display" | tee -a "$INFORME"

mostrar ""
mostrar "=== 5. TARJETA DE RED ==="
lspci | grep -i "network\|ethernet" | tee -a "$INFORME"
echo "IP: $(hostname -I)" | tee -a "$INFORME"

mostrar ""
mostrar "=== 6. ESTADO DE SALUD ==="

# Verificar disco
SMART=$(sudo smartctl -H /dev/sda 2>/dev/null | grep "result" || echo "S.M.A.R.T. no disponible")
echo "Disco S.M.A.R.T.: $SMART" | tee -a "$INFORME"

# Verificar RAM
RAM_TOTAL=$(free -m | grep Mem | awk '{print $2}')
RAM_USADA=$(free -m | grep Mem | awk '{print $3}')
RAM_PCT=$((RAM_USADA * 100 / RAM_TOTAL))
echo -n "RAM: ${RAM_USADA}MB / ${RAM_TOTAL}MB (${RAM_PCT}%) - " | tee -a "$INFORME"
if [ "$RAM_PCT" -gt 90 ]; then
    echo "CRITICO" | tee -a "$INFORME"
elif [ "$RAM_PCT" -gt 70 ]; then
    echo "AVISO" | tee -a "$INFORME"
else
    echo "OK" | tee -a "$INFORME"
fi

# Verificar disco
DISCO_PCT=$(df / | tail -1 | awk '{print $5}' | tr -d '%')
echo -n "Disco /: ${DISCO_PCT}% usado - " | tee -a "$INFORME"
if [ "$DISCO_PCT" -gt 90 ]; then
    echo "CRITICO" | tee -a "$INFORME"
elif [ "$DISCO_PCT" -gt 70 ]; then
    echo "AVISO" | tee -a "$INFORME"
else
    echo "OK" | tee -a "$INFORME"
fi

# Verificar red
echo -n "Conectividad: " | tee -a "$INFORME"
if ping -c 1 8.8.8.8 &>/dev/null; then
    echo "OK" | tee -a "$INFORME"
else
    echo "SIN CONEXION" | tee -a "$INFORME"
fi

mostrar ""
mostrar "=== 7. SERVICIOS CRITICOS ==="
for SVC in NetworkManager systemd-udevd cron; do
    ESTADO=$(systemctl is-active "$SVC" 2>/dev/null || echo "no encontrado")
    printf "  %-25s %s\n" "$SVC:" "$ESTADO" | tee -a "$INFORME"
done

mostrar ""
mostrar "=== 8. ERRORES RECIENTES ==="
ERRORES=$(journalctl -p err -b --no-pager 2>/dev/null | wc -l)
echo "Errores en este arranque: $ERRORES" | tee -a "$INFORME"
if [ "$ERRORES" -gt 0 ]; then
    journalctl -p err -b --no-pager 2>/dev/null | tail -5 | tee -a "$INFORME"
fi

mostrar ""
mostrar "=========================================="
mostrar "  Informe guardado en: $INFORME"
mostrar "=========================================="
  1. Guarda (Ctrl+O) y cierra (Ctrl+X).
  2. Dale permisos: chmod +x ~/diagnostico_equipo.sh
  3. Ejecutalo: sudo ~/diagnostico_equipo.sh
  4. Revisa el informe: cat ~/diagnostico_*.txt

Pega aqui la salida completa del script:

Analisis del script

Elemento del script Explica que hace
| tee -a "$INFORME"
if [ "$RAM_PCT" -gt 90 ]; then
for SVC in NetworkManager systemd-udevd cron; do
ping -c 1 8.8.8.8 &>/dev/null

Que mejoras le harias a este script para usarlo en un taller real? (piensa en que informacion falta o que comprobaciones adicionales harias)

Captura 6: Script de diagnostico ejecutandose

📷

Pega una captura (Ctrl+V) o arrastra una imagen aqui

Captura del script de diagnostico ejecutandose

Preview

Parte 7 - Preguntas de reflexion

Responde a cada pregunta con un minimo de 3 lineas.

1. Te traen un equipo con Ubuntu que "no detecta el WiFi". Sin abrir la torre, que comandos usarias para diagnosticar si el problema es del hardware, del driver o de la configuracion? Describe el procedimiento paso a paso.

2. Un servidor Linux muestra que el disco esta al 95% de uso. Describe paso a paso como diagnosticarias que esta ocupando el espacio y que acciones de limpieza realizarias (usando los comandos de esta practica).

3. Compara las herramientas de diagnostico de hardware de Linux (lspci, lsusb, dmidecode, dmesg) con las de Windows (Get-CimInstance/Get-PhysicalDisk en PowerShell, driverquery, sfc). Que sistema te parece mas potente para diagnosticar hardware y por que?

4. Por que es importante que un tecnico de reparacion sepa usar la terminal, si puede diagnosticar hardware abriendo la torre y mirando los componentes fisicamente? Da al menos 3 razones.

Entrega de la practica

Sube tu practica completada al canal #entrega-practicas del Discord del curso en formato PDF.

Capturas requeridas

# Descripcion OK
1 Inventario de hardware (inxi, lspci, lscpu)
2 Logs del sistema (dmesg o journalctl)
3 Diagnostico de discos (lsblk, df, smartctl)
4 Diagnostico de red (ping, traceroute, ss)
5 Servicios y rendimiento
6 Script de diagnostico ejecutandose

Formato del mensaje en Discord

Nombre: [Tu nombre y apellidos]
Practica: Diagnostico de Equipos con la Terminal de Ubuntu
[Adjuntar documento PDF y capturas de pantalla]

Criterios de evaluacion

Criterio Puntuacion Desglose
Inventario de hardware 2.0 puntos Comandos ejecutados + ficha tecnica completa + dispositivos PCI/USB
Logs y deteccion de errores 1.0 punto dmesg y journalctl usados + errores analizados
Diagnostico de discos 1.5 puntos Particiones + espacio + S.M.A.R.T. + limpieza documentada
Diagnostico de red 1.5 puntos Procedimiento sistematico + equivalencias Windows-Linux
Servicios y rendimiento 1.0 punto Servicios verificados + rendimiento analizado + arranque
Script de diagnostico 2.0 puntos Script ejecutado + analisis de codigo + mejoras propuestas
Preguntas de reflexion 1.0 punto 4 preguntas respondidas con argumentacion (min 3 lineas)
Total 10 puntos

Penalizaciones

Motivo Penalizacion
Entrega fuera de plazo (sin justificacion) -2 puntos
Capturas insuficientes (menos de 3) -1 punto
Respuestas copiadas de Internet o de otro companero -3 puntos
Respuestas de una sola linea en preguntas que piden minimo 3 lineas -0.5 puntos por pregunta
Fecha limite: Indicada por el profesor en el canal de Discord.

Lista de verificacion de entrega (firma del alumno)

Antes de subir tu practica, confirma que has incluido todo:

Dato Tu respuesta
Nombre del alumno
Firma
Fecha de entrega

Entrega esta practica en el canal #entrega-practicas del Discord del curso.

Formato: Nombre: [tu nombre] | Practica: Diagnostico de Equipos con la Terminal de Ubuntu

Practica correspondiente al Bloque Diagnostico y reparacion de equipos