script
This commit is contained in:
192
CHANGELOG.md
Normal file
192
CHANGELOG.md
Normal 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 .
|
||||
```
|
||||
Reference in New Issue
Block a user