docs: enrichissement spec — /home, distribution Gitea, détection OS
- Calcul taille /home par utilisateur (home_users[]) - Commande one-liner curl | sudo python3 depuis git.maison43gil.com - Variable MES_HDD_API configurable - Détection Proxmox/Ubuntu/Debian avec adaptations (ZFS, Ceph, snap) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -63,6 +63,7 @@ SQLite dans un volume nommé (`mes_hdd_db`).
|
||||
| `udevadm info --query=property --name=/dev/sdX` | Bus (sata/usb/nvme) |
|
||||
| `find /dev/disk/by-id -type l` | Lien by-id (sans partitions) |
|
||||
| `hostname`, `ip route get 1.1.1.1` | Identité de la machine |
|
||||
| `du -sb /home/* 2>/dev/null` | Taille par utilisateur sous `/home` |
|
||||
|
||||
### Payload JSON envoyé
|
||||
|
||||
@@ -104,6 +105,7 @@ SQLite dans un volume nommé (`mes_hdd_db`).
|
||||
"free_human": "380 Go",
|
||||
"used_percent": 24,
|
||||
"mountpoint": "/",
|
||||
"home_users": null,
|
||||
"lvm": null
|
||||
},
|
||||
{
|
||||
@@ -139,6 +141,55 @@ SQLite dans un volume nommé (`mes_hdd_db`).
|
||||
}
|
||||
```
|
||||
|
||||
### Détection OS et adaptations
|
||||
|
||||
Le script lit `/etc/os-release` pour identifier l'environnement :
|
||||
|
||||
| OS détecté | Condition |
|
||||
|---|---|
|
||||
| `proxmox` | `/etc/pve` existe OU `ID=debian` + `VARIANT_ID=proxmox` |
|
||||
| `ubuntu` | `ID=ubuntu` |
|
||||
| `debian` | `ID=debian` (fallback) |
|
||||
|
||||
Le champ `os` est inclus dans le payload au niveau machine :
|
||||
```json
|
||||
{ "hostname": "pve1", "os": "proxmox", "os_version": "8.2", ... }
|
||||
```
|
||||
|
||||
**Adaptations par OS** :
|
||||
|
||||
- **Proxmox** : enrichissement additionnel si disponible
|
||||
- Détection ZFS : `zpool list -H -o name,size,alloc,free` → ajoute `zfs_pool` sur le disque concerné
|
||||
- Détection Ceph OSD : si `/var/lib/ceph/osd` contient des liens vers le disque → champ `proxmox_role: "ceph_osd"`
|
||||
- Détection stockage VM : si disque dans `/etc/pve/storage.cfg` → `proxmox_role: "vm_storage"`
|
||||
- Les boucles (`loop*`) et devices virtuels (`dm-*`) sont ignorés comme partout
|
||||
|
||||
- **Ubuntu** : filtre des montages `squashfs` (snap) dans la liste des partitions — ils polluent `df` et `lsblk`
|
||||
|
||||
- **Debian** : comportement par défaut, aucune adaptation spécifique
|
||||
|
||||
---
|
||||
|
||||
### Taille du dossier `/home`
|
||||
|
||||
Si une partition est montée sur `/home` (ou si `/home` est dans la racine), le script calcule la taille occupée par chaque sous-dossier utilisateur via `du -sb /home/* 2>/dev/null`.
|
||||
|
||||
Le champ `home_users` est ajouté à la partition dont le point de montage est `/home` (ou `/` si `/home` n'est pas une partition dédiée) :
|
||||
|
||||
```json
|
||||
"home_users": [
|
||||
{ "user": "gilles", "size_bytes": 91268055040, "size_human": "85 Go" },
|
||||
{ "user": "alice", "size_bytes": 32212254720, "size_human": "30 Go" }
|
||||
]
|
||||
```
|
||||
|
||||
Si `/home` n'existe pas ou est vide → `home_users: []`.
|
||||
Si `du` échoue → `home_users: null`.
|
||||
|
||||
Cela permet d'identifier côté frontend les disques avec des données significatives à sauvegarder.
|
||||
|
||||
---
|
||||
|
||||
### SMART — labels en français
|
||||
|
||||
| Cas | status | label | Exemple de detail |
|
||||
@@ -271,17 +322,39 @@ nginx proxifie `/api/*` vers `api:8000`, sert `/` depuis les fichiers statiques.
|
||||
|
||||
## Lancement du script client
|
||||
|
||||
```bash
|
||||
# Télécharger et exécuter (depuis Gitea ou autre dépôt)
|
||||
curl -fsSL http://<gitea>/mes_hdd/raw/main/inventaire.py | python3
|
||||
### Dépôt source
|
||||
|
||||
# Ou localement
|
||||
python3 inventaire.py
|
||||
Le script est versionné dans le dépôt Gitea :
|
||||
`https://git.maison43gil.com/gilles/mes_hdd`
|
||||
|
||||
URL raw du script :
|
||||
`https://git.maison43gil.com/gilles/mes_hdd/raw/branch/main/inventaire.py`
|
||||
|
||||
### Commande one-liner (affichée par le frontend)
|
||||
|
||||
```bash
|
||||
curl -fsSL https://git.maison43gil.com/gilles/mes_hdd/raw/branch/main/inventaire.py | sudo python3 -
|
||||
```
|
||||
|
||||
Aucun argument requis. L'URL de l'API est configurable via variable d'environnement :
|
||||
Le frontend propose cette commande en copier-coller sur la page d'accueil, avec l'URL de l'API pré-remplie via variable d'environnement :
|
||||
|
||||
```bash
|
||||
MES_HDD_API=http://10.0.0.50:8088 python3 inventaire.py
|
||||
curl -fsSL https://git.maison43gil.com/gilles/mes_hdd/raw/branch/main/inventaire.py \
|
||||
| sudo MES_HDD_API=http://10.0.0.50:8088 python3 -
|
||||
```
|
||||
|
||||
### Variables d'environnement du script
|
||||
|
||||
| Variable | Défaut | Description |
|
||||
|---|---|---|
|
||||
| `MES_HDD_API` | `http://10.0.0.50:8088` | URL de base de l'API |
|
||||
|
||||
### Exécution locale
|
||||
|
||||
```bash
|
||||
sudo python3 inventaire.py
|
||||
# ou
|
||||
sudo MES_HDD_API=http://192.168.1.x:8088 python3 inventaire.py
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
Reference in New Issue
Block a user