# rupsc

[![crates.io](https://img.shields.io/crates/v/rupsc.svg)](https://crates.io/crates/rupsc)
[![Documentation](https://docs.rs/rups/badge.svg)](https://docs.rs/rups)
[![GPL-3.0 or later](https://img.shields.io/crates/l/rupsc.svg)](./LICENSE)
[![CI](https://github.com/aramperes/nut-rs/workflows/CI/badge.svg)](https://github.com/aramperes/nut-rs/actions?query=workflow%3ACI)

A Rust clone of [upsc](https://networkupstools.org/docs/man/upsc.html),
the [Network UPS Tools](https://github.com/networkupstools/nut) (NUT) demo program to display UPS variables.

Written using the [rups](https://github.com/aramperes/nut-rs) crate.

- Connect to `upsd`/`nut-server` using TCP
- List UPS devices
- List variables for a UPS device
- Get variable value of a UPS device
- List clients connected to a UPS device
- Connect securely with SSL

## Installation

```bash
# Using cargo
cargo install rupsc

# Or, build for other targets
# (make sure you install the appropriate toolchain & gcc linker)
cargo build --release --target armv7-unknown-linux-gnueabihf
cargo build --release --target aarch64-unknown-linux-gnu
cargo build --release --target arm-unknown-linux-gnueabihf
```

## Usage

This is a clone of [`upsc`](https://networkupstools.org/docs/man/upsc.html), so the usage is the same:

```bash
# Show usage
rupsc -h

# List variables on UPS device "nutdev1" (assumes upsd running on localhost:3493)
rupsc nutdev1

# List variables on UPS device "nutdev1" (remote upsd)
rupsc nutdev1@upsd.remote:3493

# List available UPS devices
rupsc -l

# List available UPS devices, with description
rupsc -L

# List clients connected to UPS device "nutdev1"
rupsc -c nutdev1
```

However, there are also some additions to the original tool:

```bash
# Enable network debugging
rupsc -D

# Enable SSL (strict verification)
rupsc -S

# Enable SSL (no verification)
rupsc --insecure-ssl
```

## Pronunciation

> r-oopsie