1 个不稳定版本
0.1.0 | 2021 年 12 月 6 日 |
---|
#7 在 #today
15KB
141 行
vnstat
解析
一个 Rust 库,用于解析来自 vnstat ("Linux 和 BSD 的网络和流量监控器") 的 struct
的 "oneline" 数据输出。
除了 API 版本信息外,所有字段都进行了解析。日期解析为 String
,数据值解析为 f32
,数据单位解析为 String
。
以下是来自 vnstat man
页面的 --oneline
选项的摘要
使用可解析的格式以一行显示所选接口的流量摘要。输出包含 15 个字段,其中分号用作字段分隔符。第一个字段包含输出 API 版本信息,仅在字段内容或结构发生变化时才会更改。以下字段按顺序排列:2) 接口名称,3) 当天的日期时间戳,4) 当天的接收流量,5) 当天的发送流量,6) 当天的总流量,7) 当天的平均流量速率,8) 当前月份的日期时间戳,9) 当前月份的接收流量,10) 当前月份的发送流量,11) 当前月份的总流量,12) 当前月份的平均流量速率,13) 所有时间的总接收流量,14) 所有时间的总发送流量,15) 所有时间的总流量。可以使用可选的 mode 参数来强制所有字段以字节为单位输出,而不显示单位本身。
示例输出
vnstat eno1 --oneline
1;eno1;2021-11-29;6.02 GiB;0.99 GiB;7.00 GiB;738.84 kbit/s;2021-11;6.02 GiB;0.99 GiB;7.00 GiB;24.06 kbit/s;6.02 GiB;0.99 GiB;7.00 GiB
库使用方法
use vnstat_parse::{Error, Vnstat};
fn main() -> Result<(), Error> {
let vnstat_data = Vnstat::get("eno1")?;
println!("{:?}", vnstat_data);
Ok(())
}
示例输出
Vnstat { iface: "eno1", today: "2021-11-29", day_rx: 6.02, day_rx_unit: "GiB", day_tx: 0.99, day_tx_unit: "GiB", day_total: 7.0, day_total_unit: "GiB", day_avg_rate: 738.84, day_avg_rate_unit: "kbit/s", month: "2021-11", month_rx: 6.02, month_rx_unit: "GiB", month_tx: 0.99, month_tx_unit: "GiB", month_total: 7.0, month_total_unit: "GiB", month_avg_rate: 24.06, month_avg_rate_unit: "kbit/s", all_time_rx: 6.02, all_time_rx_unit: "GiB", all_time_tx: 0.99, all_time_tx_unit: "GiB", all_time_total: 7.0, all_time_total_unit: "GiB" }
可选功能
Serialize
和 Deserialize
可以可选地用于 Vnstat
struct
,使用 miniserde 或 serde。默认情况下禁用这些功能,以提供无依赖的解析器。与 serde
相比,miniserde
提供了一个轻量级选项(少一个依赖项,编译时间更短)。
在您的 Cargo.toml
清单中指定所需功能
vnstat_parse = { version = "0.1", features = ["miniserde"] }
许可证
MIT。
依赖项
~210KB