Crate vnstat_parse[−][src]
Expand description
A library to parse oneline data output from vnstat
.
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:
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"] }
Structs
Parsed network usage data for a single interface (sourced from the vnstat
database).
Enums
Custom error type encapsulating all possible errors for this library.
From
implementations are provided for external error types.
Functions
Parse the stdout
data from the vnstat <iface> --oneline
command.