sub ops_do_ssh_qx {
my ($cmd) = @_;
$cmd->{ssh_cmd_qx} = 'ssh ' . $cmd->{user} . '\@' . $cmd->{host} . ' \'' . $cmd->{command} . '\'' . ' 2>/dev/null';
$cmd->{output} = qx($cmd->{ssh_cmd_qx});
if ( defined $cmd->{output} ) {
$cmd->{cmd_ret_code} = $?;
chomp $cmd->{output};
if ( $cmd->{cmd_ret_code} ) {
$cmd->{success} = FAILURE;
}
}
else {
($cmd->{ssh_ret_code}, $cmd->{ssh_ret_msg}) = (0 + $!, '' . $!);
$cmd->{success} = FAILURE;
}
return $cmd;
}
####
my $cmd = { name => 'foo',
user => 'foo_user',
host => 'foo.bar.com',
command => 'do_something_useful_here',
success => SUCCESS
};
##
##
my $cmd_status = ops_do_ssh_qx($cmd);
if ( $cmd_status->{success} ) {
do_something_with $cmd_status->{output};
}
else
{
do_something_with $cmd_status->{cmd_ret_code}, $cmd_status->{ssh_ret_code}, $cmd_status->{ssh_ret_msg};
}
##
##
$cmd_status->{cmd_ret_code}
$cmd_status->{ssh_ret_code}
$cmd_status->{ssh_ret_msg}