mirror of
https://github.com/aramperes/nut-rs.git
synced 2025-09-08 05:08:31 -04:00
rups: A Network UPS Tools (NUT) implementation in Rust
https://crates.io/crates/rups
.cargo | ||
.github/workflows | ||
nut-client | ||
rupsc | ||
.gitignore | ||
Cargo.lock | ||
Cargo.toml | ||
LICENSE | ||
README.md |
nut-client
A Network UPS Tools (NUT) client library for Rust.
- Connect to
upsd
/nut-server
using TCP - Login with username and password
- List UPS devices
- List variables for a UPS device
Getting Started
You'll need a running instance of the NUT daemon (upsd
) and
a compatible UPS device
to use this library:
Verify that your UPS is connected using the built-in upsc
tool:
upsc myupsname@localhost ups.status
Example
The rupsc CLI is written using this library, and is a clone of NUT's built-in upsc tool.
Here is an example use of this library (cargo run --example blocking
):
use std::env;
use std::net::ToSocketAddrs;
use nut_client::blocking::Connection;
use nut_client::{Auth, ConfigBuilder, Host};
fn main() -> nut_client::Result<()> {
let addr = env::var("NUT_ADDR")
.unwrap_or_else(|_| "localhost:3493".into())
.to_socket_addrs()
.unwrap()
.next()
.unwrap();
let username = env::var("NUT_USER").ok();
let password = env::var("NUT_PASSWORD").ok();
let auth = username.map(|username| Auth::new(username, password));
let config = ConfigBuilder::new()
.with_host(Host::Tcp(addr))
.with_auth(auth)
.with_debug(false) // Turn this on for debugging network chatter
.build();
let mut conn = Connection::new(config)?;
// Print a list of all UPS devices
println!("Connected UPS devices:");
for (name, description) in conn.list_ups()? {
println!("\t- Name: {}", name);
println!("\t Description: {}", description);
// List UPS variables (key = val)
println!("\t Variables:");
for var in conn.list_vars(&name)? {
println!("\t\t- {}", var);
}
}
Ok(())
}