# wol.rs
[][crates]
[][docs]
Wake On LAN magic packet command line tool and crate.
[crates]: https://crates.io/crates/wol
[docs]: https://docs.rs/wol
## Command line
Wake up a single host:
```console
$ wol --verbose --port 42 12:13:14:15:16:17
Waking up 12:13:14:15:16:17 with 255.255.255.255:42...
```
Wake up a list of hosts, including an optional SecureON token:
```
$ cat home-lab
12:13:14:15:16:17 9
12:23:24:25:26:27 9 cd-23-ae-9d-3f-c2
$ wol --file=home-lab
Waking up 12:13:14:15:16:17...
Waking up 12:23:24:25:26:27...
```
See `wol --help` for more information.
## Installation
- Linux binary attached to [releases](https://codeberg.org/swsnr/wol.rs/releases)
- [Arch binary package](https://build.opensuse.org/package/show/home:swsnr/wol-rs)
- `cargo install --all-features wol`
- 3rd party packages: [Repology](https://repology.org/project/wol-rs/versions)
For packaging, all releases have reproducible git archive and cargo vendor
bundles attached, signed by my SSH key from <https://codeberg.org/swsnr.keys>.
I recommend to first build with `--all-features`, then dump the manpage and
desired completions with `--print-manpage` and `--print-completions`, and
eventually build with `--features cli` to remove these options from the final
binary. See arch package above for an example.
## Crate
You can also use `wol` as a Rust crate, with `cargo add wol`:
```rust
use std::str::FromStr;
use std::net::Ipv4Addr;
let mac_address = wol::MacAddress::from_str("12-13-14-15-16-17").unwrap();
wol::send_magic_packet(mac_address, None, (Ipv4Addr::BROADCAST, 9).into()).unwrap();
```
See <https://docs.rs/wol> for detailed documentation.
## License
Copyright Sebastian Wiesner <sebastian@swsnr.de>
Licensed under the EUPL, see <https://interoperable-europe.ec.europa.eu/collection/eupl/eupl-text-eupl-12>