Files
Gilles Soulier f9f805cd8b chore: init projet — spec design + design system
Spec complète dans docs/superpowers/specs/2026-05-28-inventaire-hdd-design.md :
architecture 2 conteneurs Docker (FastAPI + nginx), script Python stdlib only,
SQLite avec serial comme clé de vérité, API ingest + dashboard + agents IA.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-28 19:46:54 +02:00

1.7 KiB

CLAUDE.md

This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.

Projet

Script bash one-shot d'inventaire disques (HDD/SSD/NVMe) pour systèmes Debian/Proxmox. Exécuté manuellement une seule fois par machine — pas de cron, pas de daemon, pas de service.

Lancement

# Local
bash inventaire_hdd.sh

# À distance (via Gitea)
curl -fsSL https://<gitea-host>/<user>/mes_hdd/raw/branch/main/inventaire_hdd.sh | bash

Architecture du script

inventaire_hdd.sh suit ce pipeline :

  1. Détection machine (hostname, IP via ip route)
  2. Listage des disques entiers via lsblk -d -o NAME,TYPE
  3. Pour chaque disque : modèle/série via lsblk puis smartctl -i en fallback
  4. État SMART via smartctl -H + smartctl -A (traduit en français simple)
  5. Type (HDD/SSD/NVMe) via /sys/block/<name>/queue/rotational
  6. Montage/espace via df -h
  7. Lien by-id via /dev/disk/by-id/
  8. Génération rapport Markdown → hdd.md dans le répertoire du script (ou pwd si exécuté via pipe)

Publication MQTT (à implémenter)

Le script doit aussi publier un JSON retenu vers :

  • broker : 10.0.0.3:1883 (sans auth)
  • topic : hdd/inventaire/<hostname>
  • flag retain (mosquitto_pub -r)

Format JSON attendu : voir consigne.hd section "Format de message conseillé".

Prérequis système

  • smartmontools (smartctl) — optionnel, géré gracieusement
  • util-linux (lsblk)
  • mosquitto-clients (mosquitto_pub) — pour la publication MQTT
  • coreutils (df, hostname), iproute2 (ip)

Robustesse

Le script doit continuer l'inventaire même si un disque échoue, si smartctl est absent, ou si le système est une VM sans accès SMART. Chaque erreur est captée localement (pas de set -e).