Última actividad 1 month ago

Subcomando sysinfo con informacion del sistema (capitulo 07)

atareao's Avatar atareao revisó este gist 1 month ago. Ir a la revisión

1 file changed, 55 insertions

sysinfo_mod.rs(archivo creado)

@@ -0,0 +1,55 @@
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 + }
Siguiente Anterior