feat(v0.1.4): SMART tile icon, IP locale robuste, copier HTTP, nettoyage UI
- Agent: détection IP via server_ip en priorité (fallback 8.8.8.8) — résout 0.0.0.0 sur LAN sans internet - Agent: détection auto des disques /sys/block (sd*, nvme*) + fix continue dans la boucle smartctl - Agent: SupplementaryGroups=disk dans le service systemd pour accès smartctl - Dashboard: icône SMART (shield-check/triangle-exclamation) dans la ligne disque de la tuile - Dashboard: bouton Copier compatible HTTP (fallback execCommand si clipboard API indisponible) - Dashboard: suppression du texte redondant dans la section INSTALLATION AGENT Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 4.6
parent
e65770407c
commit
a2060a1713
@@ -84,11 +84,21 @@ pub fn collect() -> Option<SmartMetrics> {
|
||||
if !is_available() {
|
||||
return None;
|
||||
}
|
||||
for dev in &["/dev/sda", "/dev/nvme0"] {
|
||||
let output = std::process::Command::new("smartctl")
|
||||
// Détecter les disques réels depuis /sys/block (sd*, nvme*)
|
||||
let mut devs: Vec<String> = std::fs::read_dir("/sys/block")
|
||||
.into_iter()
|
||||
.flatten()
|
||||
.flatten()
|
||||
.map(|e| e.file_name().into_string().unwrap_or_default())
|
||||
.filter(|n| n.starts_with("sd") || n.starts_with("nvme"))
|
||||
.map(|n| format!("/dev/{}", n))
|
||||
.collect();
|
||||
devs.sort();
|
||||
|
||||
for dev in &devs {
|
||||
let Ok(output) = std::process::Command::new("smartctl")
|
||||
.args(["-j", dev])
|
||||
.output()
|
||||
.ok()?;
|
||||
.output() else { continue };
|
||||
let json = String::from_utf8_lossy(&output.stdout);
|
||||
if let Ok(metrics) = parse_json(&json) {
|
||||
return Some(metrics);
|
||||
|
||||
Reference in New Issue
Block a user