Verificación periódica del estado de los discos duros

En el mundo de la informática, pocas cosas más molestas hay que un disco duro pase a mejor vida, lo que además siempre será en el peor momento. El siguiente script revisa todos los discos duros instalados (externos o internos) y envía una notificación por Telegram si detecta que a uno o más de los discos le queda poco tiempo de vida. Al recibir un mensaje así, sabemos que debemos sustituir esa unidad por otra nueva, idealmente sería clonada en su reemplazo.


#!/bin/bash

BOT_TOKEN="EL TOKEN DE TU BOT"
CHAT_ID="EL ID DE TU CUENTA EN TELEGRAM"
LOG_FILE=/var/log/check_disks.log # El log se limpiará mediante logrotate.
HOSTNAME=$(hostname)

# Se añaden las rutas por si cron o anacron las necesitan
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

enviar_alerta() {
        local mensaje="$HOSTNAME tiene la siguiente alerta de disco: $1"

        # Enviar notificación a Telegram
        curl -s -X POST "https://api.telegram.org/bot$BOT_TOKEN/sendMessage" \
                -d "chat_id=$CHAT_ID" \
                --data-urlencode "text=$mensaje" > /dev/null
}

# sd[a-z]: Linux no mantiene fijo el fichero del disco sino que se lo asigna en función del orden de "llegada" (orden en que "despiertan" los discos)
for disco in /dev/sd[a-z]; do
	# Si no es un fichero de disco salta al siguiente dispositivo
	if ! test -b "$disco" ; then
		continue
	fi
	# El flag -n standby evita despertar al disco si está dormido, así se evita desgaste innecesario.
	LSTR=$(smartctl -H -n standby "$disco" 2>&1)

	# Los dormidos que sigan con Morfeo. El lector de tarjetas vacío (usb bridge) se ignora:
	if echo "$LSTR" | grep -iqE "Device is in Standby|unknown usb bridge"; then
		continue
	fi

	# Si la salud general no es PASSED, alerta al canto
	if ! echo "$LSTR" | grep -qE "PASSED|OK"; then
	    # Extrae modelo y nº de serie del disco
	    IDENTIDAD=$(lsblk -d -n -o MODEL,SERIAL "$disco" | xargs)

	    # fallback para embellecer el mensaje en el improbable caso de que lsblk salga con un chorro de babas
	    if test -z "$IDENTIDAD" ; then
		    IDENTIDAD="desconocido"
	    fi
	    MENSAJE="El disco [$IDENTIDAD] (actualmente $disco) reporta problemas. Output: $LSTR"
	    enviar_alerta "$MENSAJE"	    
	    echo "[$(date '+%Y-%m-%d %H:%M:%S')] $MENSAJE" >> $LOG_FILE
	fi
done

echo "[$(date '+%Y-%m-%d %H:%M:%S')] Chequeo finalizado." >> $LOG_FILE

El añadido de rutas (PATH) es para evitar posibles problemas derivados del hecho de que el cron se ejecuta en entornos muy restringidos, es decir, cuando el usuario abre una terminal tiene un PATH completo, pero un cron que arranca de forma automática en segundo plano lo hace con un PATH mínimo, que podría ser meramente «/usr/bin:/bin». En este sentido, debe tenerse en cuenta que el script debe programarse en el crontab de root o no podrá accederse a la información del disco duro:

vic@blackBox:/etc$ smartctl -H /dev/sda
smartctl 7.4 2023-08-01 r5530 [x86_64-linux-6.8.0-124-generic] (local build)
Copyright (C) 2002-23, Bruce Allen, Christian Franke, www.smartmontools.org

Smartctl open device: /dev/sda failed: Permission denied

El script funciona tanto para discos duros sólidos como mecánicos. Requiere tener instalados smartmontools (que proporciona smartctl) y util-linux (que proporciona lsblk). Además, tiene una feature que si para ti es un bug puedes borrarla fácilmente: Cuando un disco duro está «dormido» (en standby), lo cual es habitual en discos duros externos dedicados a las copias de seguridad, no es interrogado acerca de su estado para evitar que arranque y se desgaste innecesariamente. Como la necesidad o no de algo es relativa, depende de las circunstancias, se pueden despertar para interrogarlos eliminando el «Device is in Standby» de la orden grep del condicional. La otra cadena que busca ese grep es para evitar que el lector de tarjetas SD dé un falso positivo.

Lo mejor es programar el script para que se ejecute periódicamente mediante crontab, siendo la periodicidad semanal la ideal para todos los equipos que no sean servidores, debiendo aumentarse para estos últimos. Por cierto, si no se trata de un servidor y el equipo no está siempre encendido, como es el caso de la mayor parte de equipos domésticos, se puede programar mediante Anacron, también disponible en el ecosistema Linux / UNIX, para asegurar su ejecución semanal.

En el caso de tener el script ejecutándose en diferentes máquinas, ya sean servidores, ordenadores de la familia, de un centro educativo o de una empresa, la variable HOSTNAME nos identificará cuál de ellas tiene el disco duro desgastado.

¿Por qué Telegram?

La notificación se hace mediante Telegram simplemente por ser muy fácil su realización, pero también se podría usar una cuenta de correo (por ejemplo Gmail) en la que identificarse y enviar el correo mediante curl. La creación de un bot es muy fácil en Telegram: sólo debemos empezar con «/start» la charla con BotFather y nos guiará en el proceso:

Bot Father Telegram

Bot Father Telegram

Al final del proceso nos indicará el token para poder acceder a la API de nuestro bot. En la constante CHAT_ID debemos poner el identificador de nuestro usuario de Telegram, pues en realidad esta aplicación de mensajería trabaja con chats, no con usuarios. Una vez más, enviar un «/start» al bot «User Info · Get ID · idbot» nos devuelve el ID, entre otros datos.

Finalmente, aclarar que si el fichero de log se crea en /var/log/ es para delegar a logrotate, la herramienta nativa de Linux encargada de trocear, comprimir y eliminar logs antiguos, la gestión del fichero y así poder disfrutar de la filosofía Linux de «configurar y olvidar». Sólo queda configurarlo en «/etc/logrotate.d/». A modo de ejemplo, esta es mi configuración:

vic@blackBox:/etc$ cat /etc/logrotate.d/check-disks 
/var/log/check_disks.log {
    weekly
    rotate 4
    missingok
    notifempty
    create 0640 root root
}

El código también está disponible en GitHub.

Aborten Worten

Crónica de una estafa en el Marketplace y la desidia de una gran superficie

Lo vivido recientemente con la compra de una placa base ASUS H81M-K en el Marketplace de Worten ha pasado de ser una simple transacción de segunda mano a un manual de lo que NUNCA debe permitir un consumidor.

1. El anzuelo: La «France» que hablaba Mandarín

El primer síntoma de alerta fue la ubicación. El vendedor, Clare02, se publicita con una sede flamante en el centro de París (Rue de Clichy). Pero la realidad logística que observé en el tracking de YunExpress reveló un periplo de 10 días por el interior de la China profunda.

Worten permite esta publicidad engañosa, donde el cliente cree comprar en la UE – con sus garantías y cercanía – para acabar recibiendo un paquete de una región con otra legislación.

2. Un socket dañado

Nada más abrir la caja, realicé una inspección de la placa base. En apariencia, estaba en buen estado hasta que observe el socket de la CPU:

  • Pines dañados: En el margen superior derecho del socket LGA 1150, un pin se encuentra desplazado lateralmente. Intentar montar una CPU ahí es sentenciarla a un cortocircuito inmediato.
  • Falso reacondicionamiento: El vendedor alardea de «30 años de experiencia» y pruebas exhaustivas, pero la placa llegó con restos de pasta térmica antigua de su anterior dueño en el marco del socket. ¿Qué clase de «profesional» ni siquiera limpia el residuo básico antes de vender una placa como testada?

socket dañado proveniente de Worten3. El Gaslighting del vendedor

Al reportar el fallo, la respuesta del vendedor es de manual de estafa:

Contamos con 30 años de experiencia profesional… es imposible que cometamos errores tan básicos… el daño es claramente consecuencia de una instalación incorrecta por su parte

El truco del espejo: culpar al cliente de una manipulación que nunca existió, pues el defecto se detectó visualmente al retirar la tapa protectora y la única CPU que tengo para esa placa base es la que tengo instalada en mi ordenador personal. De hecho, esta placa base la compré como reserva para cuando falle mi actual placa base, que ya tiene 10 años de uso. El vendedor hace un intento burdo de evadir la responsabilidad sobre un producto que nunca fue verificado antes de ser enviado desde su almacén.

4. El desentendimiento de Worten

Lo más grave no es el vendedor pícaro con todas las mañas aprendidas en Shenzhen, sino la respuesta de Worten. Tras elevar la disputa, recibí un correo genérico de su soporte:

La solicitud de devolución debe ser gestionada directamente con el vendedor… Deberás esperar por las instrucciones del vendedor…

Worten se lava las manos. Actúan como meros comisionistas de un fraude, permitiendo que vendedores extracomunitarios mientan sobre su ubicación y dejando al cliente en una situación de indefensión absoluta.


Apéndice Legal: Por qué esto es inaceptable

Para los que os encontréis en una situación similar, recordad que según la Ley General para la Defensa de los Consumidores y Usuarios:

  1. Falta de conformidad (Art. 114 y ss.): El vendedor está obligado a entregar un producto que sea conforme con el contrato. Una placa con pines doblados y restos de suciedad no es un producto conforme.
  2. Publicidad engañosa: Anunciar una ubicación en Francia para eludir la percepción de riesgo de un envío desde China es una práctica comercial desleal.
  3. Responsabilidad del Intermediario: Aunque Worten sea un Marketplace, tiene una responsabilidad solidaria al procesar el pago y alojar la publicidad engañosa del vendedor. No pueden derivar al cliente a una discusión a 10.000 km de distancia cuando el contrato se perfeccionó en su plataforma española.

Veredicto

Si valoráis vuestro hardware, vuestro tiempo y vuestro dinero: Aborten Worten. No son un puerto seguro, sino un puente hacia vendedores sin escrúpulos que operan fuera del radar de las garantías europeas.

Vant MiniMoove 11,6″ Pentium N4200

Hacía un par de meses que tenía la idea de comprar algún dispositivo para aprovechar las largas horas que paso en el transporte público, 34 horas mensuales según Google Maps Timeline. Obviamente está la opción del móvil que, como todo el mundo, llevo tiempo usando, pero quería algo donde poder leer más cómodamente, así que dudaba entre una tableta y un portátil. Finalmente me decanté por el portátil pues con él, además de leer, también puedo adelantar trabajo: desde responder un email a programar pues puedo instarle un IDE, un servidor web, etc. La conexión a Internet no es problema pues la proporciona el móvil mediante Bluetooth.

Recientemente ha sido mi cumpleaños, ocasión para que la familia aportara capital como regalo para comprar el ordenador que había ojeado por Internet: el Vant MiniMoove 11,6″, Pentium N4200. Como podéis ver por el tamaño de la pantalla, se trata de un portátil realmente pequeño, por lo que cumple los dos requerimientos más importantes para el uso que le voy a dar: fácil de transportar y larga duración de la batería.

 

Vant MiniMoove 11,6″ Pentium N4200

Su pantalla de 11,6 pulgadas en todo su esplendor.

La parte final de su nombre hace referencia a la CPU. Se trata de la siguiente generación de las series Atom de Intel. Está compuesta por cuatro núcleos y un reloj entre 1.1 y 2.5 GHz. En este modelo es de 1.1 GHz, probablemente porque la refrigeración de la CPU no es muy óptima y con una mayor velocidad hay riesgo de que se sobrecaliente. También incorpora una GPU aunque es bastante irrelevante para el uso que le voy a dar.

Como en mi experiencia para el rendimiento es más determinante la memoria que la CPU, lo compré con 8 GB en vez de los 2 GB del modelo básico. Hay que tener en cuenta que dispone de un único slot para la memoria, por lo que no existe la opción de añadirle otro DIMM del mismo tamaño más adelante para duplicar la memoria, si lo hubiera comprado con menos y quisiera ampliarla más adelante debería desechar el DIMM viejo y reemplazarlo por otro de mayor capacidad.

Otro factor importante para el rendimiento del equipo, por detrás de la memoria, es la velocidad del disco duro. Escogí un disco duro sólido, por ser estos mucho más rápidos que los mecánicos. En cuanto a la capacidad de almacenamiento, es de tan solo 128 GB frente a los mecánicos de 1 o 2 TB y aunque se puede optar por un disco sólido con el doble o triple de capacidad, los 128GB de este cubren sobradamente mis necesidades de almacenamiento y no me compensa el incremento del precio de los discos de mayor capacidad.

Sobre los discos duros sugiero al lector no comprar ningún pequeño portátil Windows con disco duro mecánico pues, a día de hoy, todos se venden con Windows 10, la versión 8 desapareció del mercado, y el uso del disco duro que hace el último sistema operativo de Microsoft es tan intensivo que sólo un disco sólido puede proporcionar al usuario una experiencia óptima. En definitiva, sólo un portátil de altas prestaciones puede proporcionar al usuario una experiencia óptima en Windows 10.

Para este portátil me decanté por un Linux como sistema operativo. Además de ser el de mi preferencia tanto para ordenadores de sobremesa como para portátiles por las ventajas que he expuesto en este blog, en el caso de un Notebook se añade la ventaja de consumir menos recursos, la cual destaca cuando los recursos son algo más limitados.

GNU/ Linux Inside Vant MiniMoove 11,6″ Pentium N4200

Tux inside.

El precio total, IVA incluido, con el canon digital de la ADEPI, es de 383€ sin los gatos de envío. Creo que he comprado un notebook reducido en el precio pero no en las prestaciones pues un equipo de rendimiento similar pero con Windows estaría por encima de los 500€.

Teclado Vant MiniMoove 11,6″ Pentium N4200

Teclado de membrana. Mejor tratarlo con suavidad si quiero que dure años.

Lateral izquierdo Vant MiniMoove 11,6″ Pentium N4200

De izquierda a derecha: conectores VGA, HDMI, USB 3.0 y las clavijas del micrófono y del audio.

Lateral derecho Vant MiniMoove 11,6″ Pentium N4200

De izquierda a derecha: 2 puertos USB 2.0, lector de tarjetas, conector de red RJ-45 y alimentación.

Si os interesa comprar un ordenador con Linux y por lo tanto no queréis pagar una licencia de un software que tampoco vais a usar, echadle un vistazo a Vant, una marca de ordenadores que vienen con la distribución Ubuntu de Linux instalada. Este modelo lo compré a través de Pcubuntu. De momento todo ha ido bien, las únicas dos pequeñas quejas que tengo están relacionadas con la configuración del sistema operativo:

Sobre este último punto, cómo aumentar la duración de la batería en los portátiles con Linux, escribiré en un próximo artículo.