mirror of
https://github.com/house-of-vanity/rexec.git
synced 2025-08-21 15:17:15 +00:00
Improve readability
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "rexec"
|
name = "rexec"
|
||||||
version = "1.0.7"
|
version = "1.0.8"
|
||||||
readme = "https://github.com/house-of-vanity/rexec#readme"
|
readme = "https://github.com/house-of-vanity/rexec#readme"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
description = "Parallel SSH executor"
|
description = "Parallel SSH executor"
|
||||||
|
55
src/main.rs
55
src/main.rs
@@ -9,7 +9,6 @@ use std::process;
|
|||||||
|
|
||||||
use clap::Parser;
|
use clap::Parser;
|
||||||
use colored::*;
|
use colored::*;
|
||||||
//use dialoguer::Confirm;
|
|
||||||
use dns_lookup::lookup_host;
|
use dns_lookup::lookup_host;
|
||||||
use env_logger::Env;
|
use env_logger::Env;
|
||||||
use itertools::Itertools;
|
use itertools::Itertools;
|
||||||
@@ -53,6 +52,14 @@ struct Args {
|
|||||||
)]
|
)]
|
||||||
noconfirm: bool,
|
noconfirm: bool,
|
||||||
|
|
||||||
|
#[arg(
|
||||||
|
short = 'b',
|
||||||
|
long,
|
||||||
|
default_value_t = true,
|
||||||
|
help = "Use formatting for better human readability"
|
||||||
|
)]
|
||||||
|
beauty: bool,
|
||||||
|
|
||||||
#[arg(short, long, default_value_t = 100)]
|
#[arg(short, long, default_value_t = 100)]
|
||||||
parallel: i32,
|
parallel: i32,
|
||||||
}
|
}
|
||||||
@@ -234,9 +241,7 @@ fn main() {
|
|||||||
_ => unreachable!(),
|
_ => unreachable!(),
|
||||||
})
|
})
|
||||||
{
|
{
|
||||||
info!("\n");
|
|
||||||
info!("Run command on {} servers.", &config.hosts.len());
|
info!("Run command on {} servers.", &config.hosts.len());
|
||||||
info!("\n");
|
|
||||||
|
|
||||||
// Run a command on all the configured hosts.
|
// Run a command on all the configured hosts.
|
||||||
// Receive the result of the command for each host and print its output.
|
// Receive the result of the command for each host and print its output.
|
||||||
@@ -248,8 +253,8 @@ fn main() {
|
|||||||
.collect::<Vec<_>>()[0]
|
.collect::<Vec<_>>()[0]
|
||||||
.to_string();
|
.to_string();
|
||||||
let ip = ip.parse::<IpAddr>().unwrap();
|
let ip = ip.parse::<IpAddr>().unwrap();
|
||||||
info!(
|
println!(
|
||||||
"{}",
|
"\n{}",
|
||||||
hosts_and_ips
|
hosts_and_ips
|
||||||
.get(&ip)
|
.get(&ip)
|
||||||
.unwrap_or(&"Couldn't parse IP".to_string())
|
.unwrap_or(&"Couldn't parse IP".to_string())
|
||||||
@@ -265,14 +270,44 @@ fn main() {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
if output.exit_status == 0 {
|
let code_string = if output.exit_status == 0 {
|
||||||
println!("Code {}", output.exit_status);
|
format!("{}", output.exit_status.to_string().green())
|
||||||
} else {
|
} else {
|
||||||
error!("Code {}", output.exit_status);
|
format!("{}", output.exit_status.to_string().red())
|
||||||
};
|
};
|
||||||
|
println!("{}", format!("Exit code [{}] / stdout {} bytes / stderr {} bytes", code_string, output.stdout.len(), output.stderr.len()).bold());
|
||||||
|
|
||||||
if !args.code {
|
if !args.code {
|
||||||
println!("STDOUT:\n{}", String::from_utf8(output.stdout).unwrap());
|
match String::from_utf8(output.stdout) {
|
||||||
println!("STDERR:\n{}", String::from_utf8(output.stderr).unwrap());
|
Ok(stdout) => {
|
||||||
|
match stdout.as_str() {
|
||||||
|
"" => {}
|
||||||
|
_ => {
|
||||||
|
println!("{}", "STDOUT".bold().blue());
|
||||||
|
for line in stdout.lines() {
|
||||||
|
println!("{} {}", "║".green(), line);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
Err(_) => {}
|
||||||
|
}
|
||||||
|
match String::from_utf8(output.stderr) {
|
||||||
|
Ok(stderr) => {
|
||||||
|
match stderr.as_str() {
|
||||||
|
"" => {}
|
||||||
|
_ => {
|
||||||
|
println!("{}", "STDERR".bold().bright_red());
|
||||||
|
for line in stderr.lines() {
|
||||||
|
println!("{} {}", "║".red(), line);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
Err(_) => {}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
Reference in New Issue
Block a user