Add hostid
applet
This commit is contained in:
parent
3ef3a8b3aa
commit
5076dcc350
@ -34,6 +34,7 @@ code between applets, making for an overall smaller binary.
|
|||||||
- fold
|
- fold
|
||||||
- groups
|
- groups
|
||||||
- head
|
- head
|
||||||
|
- hostid
|
||||||
- hostname
|
- hostname
|
||||||
- link
|
- link
|
||||||
- logname
|
- logname
|
||||||
|
27
src/cmd/hostid/mod.rs
Normal file
27
src/cmd/hostid/mod.rs
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
use super::Cmd;
|
||||||
|
use clap::Command;
|
||||||
|
|
||||||
|
#[derive(Debug, Default)]
|
||||||
|
pub struct Hostid;
|
||||||
|
|
||||||
|
impl Cmd for Hostid {
|
||||||
|
fn cli(&self) -> clap::Command {
|
||||||
|
Command::new("hostid")
|
||||||
|
.about("print the numeric identifier for the current host")
|
||||||
|
.author("Nathan Fisher")
|
||||||
|
.version(env!("CARGO_PKG_VERSION"))
|
||||||
|
}
|
||||||
|
|
||||||
|
fn run(&self, _matches: Option<&clap::ArgMatches>) -> Result<(), Box<dyn std::error::Error>> {
|
||||||
|
let hostid = unsafe {
|
||||||
|
libc::gethostid()
|
||||||
|
};
|
||||||
|
let hostid: String = format!("{hostid:x}").chars().skip(8).collect();
|
||||||
|
println!("{}", hostid);
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
|
fn path(&self) -> Option<crate::Path> {
|
||||||
|
Some(crate::Path::UsrBin)
|
||||||
|
}
|
||||||
|
}
|
@ -22,6 +22,7 @@ mod fold;
|
|||||||
mod getty;
|
mod getty;
|
||||||
mod groups;
|
mod groups;
|
||||||
mod head;
|
mod head;
|
||||||
|
mod hostid;
|
||||||
mod hostname;
|
mod hostname;
|
||||||
mod link;
|
mod link;
|
||||||
mod ln;
|
mod ln;
|
||||||
@ -86,6 +87,8 @@ pub fn get(name: &str) -> Option<Box<dyn Cmd>> {
|
|||||||
"fold" => Some(Box::new(fold::Fold::default())),
|
"fold" => Some(Box::new(fold::Fold::default())),
|
||||||
"groups" => Some(Box::new(groups::Groups::default())),
|
"groups" => Some(Box::new(groups::Groups::default())),
|
||||||
"head" => Some(Box::new(head::Head::default())),
|
"head" => Some(Box::new(head::Head::default())),
|
||||||
|
"hostid" => Some(Box::new(hostid::Hostid::default())),
|
||||||
|
"hostname" => Some(Box::new(hostname::Hostname::default())),
|
||||||
"link" => Some(Box::new(link::Link::default())),
|
"link" => Some(Box::new(link::Link::default())),
|
||||||
"logname" => Some(Box::new(logname::Logname::default())),
|
"logname" => Some(Box::new(logname::Logname::default())),
|
||||||
"mkfifo" => Some(Box::new(mkfifo::MkFifo::default())),
|
"mkfifo" => Some(Box::new(mkfifo::MkFifo::default())),
|
||||||
@ -113,7 +116,7 @@ pub fn get(name: &str) -> Option<Box<dyn Cmd>> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub static COMMANDS: [&str; 41] = [
|
pub static COMMANDS: [&str; 42] = [
|
||||||
"base32",
|
"base32",
|
||||||
"base64",
|
"base64",
|
||||||
"basename",
|
"basename",
|
||||||
@ -131,6 +134,7 @@ pub static COMMANDS: [&str; 41] = [
|
|||||||
"fold",
|
"fold",
|
||||||
"groups",
|
"groups",
|
||||||
"head",
|
"head",
|
||||||
|
"hostid",
|
||||||
"hostname",
|
"hostname",
|
||||||
"link",
|
"link",
|
||||||
"logname",
|
"logname",
|
||||||
|
Loading…
Reference in New Issue
Block a user