src/tools/procfs.rs: implement read_proc_net_dev()
Signed-off-by: Christian Ebner <c.ebner@proxmox.com>
This commit is contained in:
parent
13abfdc57a
commit
d2981e2738
|
@ -233,3 +233,33 @@ pub fn read_memory_usage() -> Result<ProcFsMemUsage, Error> {
|
||||||
_ => bail!("Error while parsing '{}'", path),
|
_ => bail!("Error while parsing '{}'", path),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(Debug)]
|
||||||
|
pub struct ProcFsNetDev {
|
||||||
|
pub device: String,
|
||||||
|
pub receive: u64,
|
||||||
|
pub send: u64,
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn read_proc_net_dev() -> Result<Vec<ProcFsNetDev>, Error> {
|
||||||
|
let path = "/proc/net/dev";
|
||||||
|
let file = OpenOptions::new().read(true).open(&path)?;
|
||||||
|
|
||||||
|
let mut result = Vec::new();
|
||||||
|
for line in BufReader::new(&file).lines().skip(2) {
|
||||||
|
let content = line?;
|
||||||
|
let mut iter = content.split_whitespace();
|
||||||
|
match (iter.next(), iter.next(), iter.skip(7).next()) {
|
||||||
|
(Some(device), Some(receive), Some(send)) => {
|
||||||
|
result.push(ProcFsNetDev {
|
||||||
|
device: device[..device.len()-1].to_string(),
|
||||||
|
receive: receive.parse::<u64>()?,
|
||||||
|
send: send.parse::<u64>()?,
|
||||||
|
});
|
||||||
|
},
|
||||||
|
_ => bail!("Error while parsing '{}'", path),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Ok(result)
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue