f9f805cd8b
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>
51 lines
1.7 KiB
Markdown
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`).
|