#!# perl: deploy/code/m.mcmd
use strict;
use File::Spec;
use Sys::Hostname;
use Data::Dumper;
use MYDan::Agent::Client;
use MYDan::Node;
use MYDan::Util::MIO::CMD;
my $conf;
BEGIN{
$conf = MYDan::Util::OptConf->load()->dump('agent')->{conf};
};
return sub
{
my %param = @_;
my ( $batch, $param ) = @param{qw( batch param )};
return unless my $bin = $param->{bin};
$bin = [ $bin ] unless ref $bin;
my $range = MYDan::Node->new();
print "=" x 30,"\n";
my %result = MYDan::Util::MIO::CMD->new( map { $_ => $bin } @$batch )->run( %$param );
my ( %mesg, %succ );
while ( my ( $io, $mesg ) = each %result )
{
while ( my ( $mesg, $node ) = each %$mesg )
{
push @{ $mesg{$io} }, join ': ', $range->load( $node )->dump, $mesg;
}
}
for my $io ( sort keys %mesg )
{
print "\n---\n$io:\n";
map { print " $_" } @{ $mesg{$io} };
}
%succ = map{ $_ => 1 }@{$result{status}{0}} if $result{status} && $result{status}{0};
print "=" x 30,"\n";
return map{ $_ => 1 }keys %succ;
};