#output #traffic #month #today #parse #time #vnstat

vnstat_parse

解析 vnstat --oneline 命令的输出

1 个不稳定版本

0.1.0 2021 年 12 月 6 日

#7#today

MIT 许可证

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" }

可选功能

SerializeDeserialize 可以可选地用于 Vnstat struct,使用 miniserdeserde。默认情况下禁用这些功能,以提供无依赖的解析器。与 serde 相比,miniserde 提供了一个轻量级选项(少一个依赖项,编译时间更短)。

在您的 Cargo.toml 清单中指定所需功能

vnstat_parse = { version = "0.1", features = ["miniserde"] }

许可证

MIT。

依赖项

~210KB