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

51 lines
1.7 KiB
Markdown

# 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
```bash
# 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`).