This commit is contained in:
2025-12-08 05:42:52 +01:00
parent 80d8b7aa87
commit 5d483b0df5
32 changed files with 9837 additions and 579 deletions

192
CHANGELOG.md Normal file
View File

@@ -0,0 +1,192 @@
# Changelog - script_test.sh
## Version 1.0.1 - Améliorations demandées
### Nouvelles fonctionnalités
#### 1. Wake-on-LAN pour cartes Ethernet
- **Fichier** : [script_test.sh:546-555](script_test.sh#L546-L555)
- Détection automatique du support Wake-on-LAN via `ethtool`
- Ajout du champ `wake_on_lan` (true/false/null) dans les informations réseau
- Vérifie si la carte supporte le "magic packet" (flag 'g')
```json
{
"name": "eth0",
"type": "ethernet",
"wake_on_lan": true
}
```
#### 2. Statistiques RAM détaillées
- **Fichier** : [script_test.sh:298-303](script_test.sh#L298-L303) et [script_test.sh:367-385](script_test.sh#L367-L385)
- Ajout de la RAM utilisée (`used_mb`)
- Ajout de la RAM libre (`free_mb`)
- Ajout de la RAM partagée (`shared_mb`) - inclut tmpfs, vidéo partagée, etc.
- Distinction entre RAM physique totale et RAM disponible dans l'OS
```json
{
"total_mb": 16384,
"used_mb": 8192,
"free_mb": 7500,
"shared_mb": 692
}
```
#### 3. Test réseau iperf3 vers 10.0.1.97
- **Fichier** : [script_test.sh:675-726](script_test.sh#L675-L726)
- Test de connectivité préalable avec `ping`
- Test upload (client → serveur) pendant 10 secondes
- Test download (serveur → client avec `-R`) pendant 10 secondes
- Mesure du ping moyen (5 paquets)
- Calcul du score réseau basé sur la moyenne upload/download
**Prérequis** : Le serveur 10.0.1.97 doit avoir `iperf3 -s` en cours d'exécution.
```bash
# Sur le serveur 10.0.1.97
iperf3 -s
```
```json
{
"upload_mbps": 940.50,
"download_mbps": 950.20,
"ping_ms": 0.5,
"score": 94.54
}
```
#### 4. Données SMART de vieillissement des disques
- **Fichier** : [script_test.sh:492-602](script_test.sh#L492-L602)
- Extraction complète des données SMART pour chaque disque via `smartctl`
- **Indicateurs de santé globale** :
- `health_status` : PASSED/FAILED (test auto-diagnostic SMART)
- `temperature_celsius` : Température actuelle du disque
- **Indicateurs de vieillissement** :
- `power_on_hours` : Heures de fonctionnement totales
- `power_cycle_count` : Nombre de démarrages/arrêts
- `reallocated_sectors` : Secteurs défectueux réalloués (⚠️ signe de défaillance)
- `pending_sectors` : Secteurs en attente de réallocation (⚠️ attention)
- `udma_crc_errors` : Erreurs de transmission (câble/interface)
- **Pour SSD uniquement** :
- `wear_leveling_count` : Compteur d'usure des cellules
- `total_lbas_written` : Volume total de données écrites
**Interprétation** :
-`health_status: "PASSED"` + `reallocated_sectors: 0` = Disque sain
- ⚠️ `reallocated_sectors > 0` = Début de défaillance, surveiller
- 🔴 `pending_sectors > 0` = Défaillance imminente, sauvegarder immédiatement
- 🔴 `health_status: "FAILED"` = Disque défaillant, remplacer
```json
{
"device": "sda",
"model": "Samsung SSD 970 EVO Plus 500GB",
"type": "ssd",
"smart": {
"health_status": "PASSED",
"power_on_hours": 12543,
"power_cycle_count": 1876,
"temperature_celsius": 42,
"reallocated_sectors": 0,
"pending_sectors": 0,
"udma_crc_errors": 0,
"wear_leveling_count": 97,
"total_lbas_written": 45678901234
}
}
```
#### 5. Correction du calcul global_score
- **Fichier** : [script_test.sh:732-760](script_test.sh#L732-L760)
- Le score global n'inclut **que** CPU, RAM et Disk (pas réseau, pas GPU)
- Nouvelle pondération :
- **CPU** : 40%
- **RAM** : 30%
- **Disk** : 30%
- Normalisation automatique si certains benchmarks sont manquants
- Score sur 100
### Corrections
- **PATH Fix** : Ajout de `/usr/sbin` et `/sbin` au PATH ([script_test.sh:30](script_test.sh#L30))
- Résout le problème de détection de `dmidecode`, `smartctl`, `ethtool`
### Format JSON mis à jour
```json
{
"hardware": {
"ram": {
"total_mb": 16384,
"used_mb": 8192,
"free_mb": 7500,
"shared_mb": 692,
"slots_total": 4,
"slots_used": 2,
"ecc": false,
"layout": [...]
},
"network": [
{
"name": "eth0",
"type": "ethernet",
"mac": "00:11:22:33:44:55",
"ip_address": "10.0.1.100",
"speed_mbps": 1000,
"wake_on_lan": true
}
]
},
"benchmarks": {
"cpu": {
"events_per_sec": 5234.89,
"duration_s": 10.0,
"score": 52.35
},
"memory": {
"throughput_mib_s": 15234.5,
"score": 76.17
},
"disk": {
"read_mb_s": 450.0,
"write_mb_s": 420.0,
"iops_read": 112000,
"iops_write": 105000,
"latency_ms": 0.08,
"score": 43.50
},
"network": {
"upload_mbps": 940.5,
"download_mbps": 950.2,
"ping_ms": 0.5,
"score": 94.54
},
"gpu": null,
"global_score": 57.00
}
}
```
### Notes d'utilisation
1. **Serveur iperf3** : Assurez-vous que `iperf3 -s` tourne sur 10.0.1.97 avant de lancer le script
2. **Permissions** : Le script nécessite `sudo` pour dmidecode, smartctl, ethtool
3. **Durée** : Le script prend environ 3-4 minutes (10s iperf3 upload + 10s download + 30s disk)
### Commande de test
```bash
# Lancer le serveur iperf3 sur 10.0.1.97
ssh user@10.0.1.97 'iperf3 -s -D'
# Lancer le script de test
sudo bash script_test.sh
# Voir le résultat
cat result.json | jq .
```