sysinfo_mod.rs
· 2.2 KiB · Rust
Ham
use anyhow::Result;
pub fn ejecutar(formato: &str) -> Result<()> {
let mut system = sysinfo::System::new_all();
system.refresh_all();
std::thread::sleep(sysinfo::MINIMUM_CPU_UPDATE_INTERVAL);
let hostname = sysinfo::System::host_name().unwrap_or_default();
let kernel = sysinfo::System::kernel_version().unwrap_or_default();
let os_version = sysinfo::System::os_version().unwrap_or_default();
let uptime_secs = sysinfo::System::uptime();
match formato {
"json" => {
let info = serde_json::json!({
"hostname": hostname,
"kernel": kernel,
"os": os_version,
"cpus": system.cpus().len(),
"memory_total_gb": system.total_memory() as f64 / 1024.0 / 1024.0 / 1024.0,
"memory_used_gb": system.used_memory() as f64 / 1024.0 / 1024.0 / 1024.0,
"memory_percent": system.used_memory() as f64 / system.total_memory() as f64 * 100.0,
"uptime_seconds": uptime_secs,
});
println!("{}", serde_json::to_string_pretty(&info)?);
}
_ => {
println!("-- Informacion del sistema --");
println!(" Hostname: {}", hostname);
println!(" Kernel: {}", kernel);
println!(" SO: {}", os_version);
println!(
" CPU(s): {} nucleos ({}%)",
system.cpus().len(),
system.global_cpu_usage()
);
println!(
" Memoria: {:.2} GB / {:.2} GB ({:.1}%)",
system.used_memory() as f64 / 1024.0 / 1024.0 / 1024.0,
system.total_memory() as f64 / 1024.0 / 1024.0 / 1024.0,
system.used_memory() as f64 / system.total_memory() as f64 * 100.0
);
println!(
" Swap: {:.2} GB / {:.2} GB",
system.used_swap() as f64 / 1024.0 / 1024.0 / 1024.0,
system.total_swap() as f64 / 1024.0 / 1024.0 / 1024.0
);
println!(" Activo: {} horas", uptime_secs / 3600);
println!("------------------------------");
}
}
Ok(())
}
| 1 | use anyhow::Result; |
| 2 | |
| 3 | pub fn ejecutar(formato: &str) -> Result<()> { |
| 4 | let mut system = sysinfo::System::new_all(); |
| 5 | system.refresh_all(); |
| 6 | |
| 7 | std::thread::sleep(sysinfo::MINIMUM_CPU_UPDATE_INTERVAL); |
| 8 | |
| 9 | let hostname = sysinfo::System::host_name().unwrap_or_default(); |
| 10 | let kernel = sysinfo::System::kernel_version().unwrap_or_default(); |
| 11 | let os_version = sysinfo::System::os_version().unwrap_or_default(); |
| 12 | let uptime_secs = sysinfo::System::uptime(); |
| 13 | |
| 14 | match formato { |
| 15 | "json" => { |
| 16 | let info = serde_json::json!({ |
| 17 | "hostname": hostname, |
| 18 | "kernel": kernel, |
| 19 | "os": os_version, |
| 20 | "cpus": system.cpus().len(), |
| 21 | "memory_total_gb": system.total_memory() as f64 / 1024.0 / 1024.0 / 1024.0, |
| 22 | "memory_used_gb": system.used_memory() as f64 / 1024.0 / 1024.0 / 1024.0, |
| 23 | "memory_percent": system.used_memory() as f64 / system.total_memory() as f64 * 100.0, |
| 24 | "uptime_seconds": uptime_secs, |
| 25 | }); |
| 26 | println!("{}", serde_json::to_string_pretty(&info)?); |
| 27 | } |
| 28 | _ => { |
| 29 | println!("-- Informacion del sistema --"); |
| 30 | println!(" Hostname: {}", hostname); |
| 31 | println!(" Kernel: {}", kernel); |
| 32 | println!(" SO: {}", os_version); |
| 33 | println!( |
| 34 | " CPU(s): {} nucleos ({}%)", |
| 35 | system.cpus().len(), |
| 36 | system.global_cpu_usage() |
| 37 | ); |
| 38 | println!( |
| 39 | " Memoria: {:.2} GB / {:.2} GB ({:.1}%)", |
| 40 | system.used_memory() as f64 / 1024.0 / 1024.0 / 1024.0, |
| 41 | system.total_memory() as f64 / 1024.0 / 1024.0 / 1024.0, |
| 42 | system.used_memory() as f64 / system.total_memory() as f64 * 100.0 |
| 43 | ); |
| 44 | println!( |
| 45 | " Swap: {:.2} GB / {:.2} GB", |
| 46 | system.used_swap() as f64 / 1024.0 / 1024.0 / 1024.0, |
| 47 | system.total_swap() as f64 / 1024.0 / 1024.0 / 1024.0 |
| 48 | ); |
| 49 | println!(" Activo: {} horas", uptime_secs / 3600); |
| 50 | println!("------------------------------"); |
| 51 | } |
| 52 | } |
| 53 | |
| 54 | Ok(()) |
| 55 | } |