vnstat_parse

Crates.iovnstat_parse
lib.rsvnstat_parse
version0.1.0
sourcesrc
created_at2021-12-06 12:40:54.012051
updated_at2021-12-06 12:40:54.012051
descriptionParse output from `vnstat --oneline` command
homepage
repositoryhttps://git.coopcloud.tech/glyph/vnstat_parse
max_upload_size
id493196
size18,596
glyph (mycognosist)

documentation

README

vnstat parse

A Rust library to parse oneline data output from vnstat ("a network and traffic monitor for Linux and BSD").

All fields are parsed, with the exception of the API version information. Dates are parsed to String, data values are parsed to f32 and data units are parsed to String.

Here is the summary of the --oneline option from the vnstat man page:

Show traffic summary for selected interface using one line with a parsable format. The output contains 15 fields with ; used as field delimiter. The 1st field contains the API version information of the output that will only be changed in future versions if the field content or structure changes. The following fields in order 2) interface name, 3) timestamp for today, 4) rx for today, 5) tx for today, 6) total for today, 7) average traffic rate for today, 8) timestamp for current month, 9) rx for current month, 10) tx for current month, 11) total for current month, 12) average traffic rate for current month, 13) all time total rx, 14) all time total tx, 15) all time total traffic. An optional mode parameter can be used to force all fields to output in bytes without the unit itself shown.

Example output

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

Library Usage

use vnstat_parse::{Error, Vnstat};

fn main() -> Result<(), Error> {
    let vnstat_data = Vnstat::get("eno1")?;

    println!("{:?}", vnstat_data);

    Ok(())
}

Example output

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

Optional Features

Serialize and Deserialize can be optionally derived for the Vnstat struct using either miniserde or serde. These features are disabled by default to offer a zero dependency parser. miniserde offers a lightweight option when compared with serde (one less dependency and shorter compile times).

Specify the desired feature in your Cargo.toml manifest:

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

License

MIT.

Commit count: 0

cargo fmt