From 98e1e33859a5ca724eaec74e831b69c074c5ae4c Mon Sep 17 00:00:00 2001 From: _ <_@_> Date: Sun, 5 Dec 2021 03:46:56 +0000 Subject: [PATCH] read MAC address --- Cargo.lock | 85 +++++++++++++++++++++++++++++++++++++++++++++++++++++ Cargo.toml | 1 + src/main.rs | 10 +++++++ 3 files changed, 96 insertions(+) diff --git a/Cargo.lock b/Cargo.lock index 9fc8be1..dd6c5cc 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,13 +2,76 @@ # It is not intended for manual editing. version = 3 +[[package]] +name = "autocfg" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a" + +[[package]] +name = "bitflags" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693" + +[[package]] +name = "cc" +version = "1.0.72" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22a9137b95ea06864e018375b72adfb7db6e6f68cfc8df5a04d00288050485ee" + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "libc" +version = "0.2.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f98a04dce437184842841303488f70d0188c5f51437d2a834dc097eafa909a01" + [[package]] name = "lookaround" version = "0.1.0" dependencies = [ + "mac_address", "thiserror", ] +[[package]] +name = "mac_address" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89544d9544366f6cda81244514a80809b137b5a179947b73bfa9f2797480de69" +dependencies = [ + "nix", + "winapi", +] + +[[package]] +name = "memoffset" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce" +dependencies = [ + "autocfg", +] + +[[package]] +name = "nix" +version = "0.22.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3bb9a13fa32bc5aeb64150cd3f32d6cf4c748f8f8a417cce5d2eb976a8370ba" +dependencies = [ + "bitflags", + "cc", + "cfg-if", + "libc", + "memoffset", +] + [[package]] name = "proc-macro2" version = "1.0.32" @@ -63,3 +126,25 @@ name = "unicode-xid" version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3" + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" diff --git a/Cargo.toml b/Cargo.toml index f4105ec..133a946 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -6,6 +6,7 @@ edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] +mac_address = "1.1.2" thiserror = "1.0.30" [profile.release] diff --git a/src/main.rs b/src/main.rs index 2000b0c..952ca3b 100644 --- a/src/main.rs +++ b/src/main.rs @@ -7,6 +7,7 @@ use std::{ }, }; +use mac_address::get_mac_address; use thiserror::Error; #[derive (Debug, Error)] @@ -45,6 +46,15 @@ fn main () -> Result <(), AppError> { let _exe_name = args.next (); + match get_mac_address() { + Ok(Some(ma)) => { + println!("MAC addr = {}", ma); + println!("bytes = {:?}", ma.bytes()); + } + Ok(None) => println!("No MAC address found."), + Err(e) => println!("{:?}", e), + } + match args.next ().as_ref ().map (|s| &s[..]) { None => return Err (CliArgError::MissingSubcommand.into ()), Some ("client") => client ()?,