mirror of
https://github.com/pandorafms/pandorafms.git
synced 2025-07-29 08:45:12 +02:00
Merge branch 'ent-9509-agregar-mensaje-notificacion-de-omnishell-si-falta-libreria' into 'develop'
Omnishell error xml if YAML::Tiny not installed on agent See merge request artica/pandorafms!5529
This commit is contained in:
commit
f4c94e2a86
@ -556,30 +556,38 @@ BEGIN {
|
|||||||
sub runCommand {
|
sub runCommand {
|
||||||
my ($self, $ref, $output_mode) = @_;
|
my ($self, $ref, $output_mode) = @_;
|
||||||
|
|
||||||
|
my $result;
|
||||||
if($self->load_libraries()) {
|
if($self->load_libraries()) {
|
||||||
# Functionality possible.
|
# Functionality possible.
|
||||||
my $command = $self->{'commands'}->{$ref};
|
my $command = $self->{'commands'}->{$ref};
|
||||||
my $result = $self->evaluate_command($ref);
|
$result = $self->evaluate_command($ref);
|
||||||
if (ref($result) eq "HASH") {
|
} else {
|
||||||
# Process command result.
|
$result = {
|
||||||
if (defined($output_mode) && $output_mode eq 'xml') {
|
'stderr' => 'Cannot use commands without YAML dependency, please install it.',
|
||||||
my $output = '';
|
'name' => 'YAML::Tiny',
|
||||||
$output .= "<cmd_report>\n";
|
'error_level' => 2,
|
||||||
$output .= " <cmd_response>\n";
|
};
|
||||||
$output .= " <cmd_name><![CDATA[".$result->{'name'}."]]></cmd_name>\n";
|
}
|
||||||
$output .= " <cmd_key><![CDATA[".$ref."]]></cmd_key>\n";
|
|
||||||
$output .= " <cmd_errorlevel><![CDATA[".$result->{'error_level'}."]]></cmd_errorlevel>\n";
|
|
||||||
$output .= " <cmd_stdout><![CDATA[".$result->{'stdout'}."]]></cmd_stdout>\n";
|
|
||||||
$output .= " <cmd_stderr><![CDATA[".$result->{'stderr'}."]]></cmd_stderr>\n";
|
|
||||||
$output .= " </cmd_response>\n";
|
|
||||||
$output .= "</cmd_report>\n";
|
|
||||||
|
|
||||||
return $output;
|
if (ref($result) eq "HASH") {
|
||||||
}
|
# Process command result.
|
||||||
return $result;
|
if (defined($output_mode) && $output_mode eq 'xml') {
|
||||||
} else {
|
my $output = '';
|
||||||
$self->set_last_error('Failed to process ['.$ref.']: '.$result);
|
$output .= "<cmd_report>\n";
|
||||||
|
$output .= " <cmd_response>\n";
|
||||||
|
$output .= " <cmd_name><![CDATA[".$result->{'name'}."]]></cmd_name>\n";
|
||||||
|
$output .= " <cmd_key><![CDATA[".$ref."]]></cmd_key>\n";
|
||||||
|
$output .= " <cmd_errorlevel><![CDATA[".$result->{'error_level'}."]]></cmd_errorlevel>\n";
|
||||||
|
$output .= " <cmd_stdout><![CDATA[".$result->{'stdout'}."]]></cmd_stdout>\n";
|
||||||
|
$output .= " <cmd_stderr><![CDATA[".$result->{'stderr'}."]]></cmd_stderr>\n";
|
||||||
|
$output .= " </cmd_response>\n";
|
||||||
|
$output .= "</cmd_report>\n";
|
||||||
|
|
||||||
|
return $output;
|
||||||
}
|
}
|
||||||
|
return $result;
|
||||||
|
} else {
|
||||||
|
$self->set_last_error('Failed to process ['.$ref.']: '.$result);
|
||||||
}
|
}
|
||||||
|
|
||||||
return undef;
|
return undef;
|
||||||
|
@ -258,6 +258,14 @@ class ConsoleSupervisor
|
|||||||
$this->checkSyncQueueStatus();
|
$this->checkSyncQueueStatus();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Checkc agent missing libraries.
|
||||||
|
* NOTIF.AGENT.LIBRARY
|
||||||
|
*/
|
||||||
|
if ((bool) enterprise_installed() === true) {
|
||||||
|
$this->checkLibaryError();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -518,6 +526,14 @@ class ConsoleSupervisor
|
|||||||
$this->checkSyncQueueLength();
|
$this->checkSyncQueueLength();
|
||||||
$this->checkSyncQueueStatus();
|
$this->checkSyncQueueStatus();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Checkc agent missing libraries.
|
||||||
|
* NOTIF.AGENT.LIBRARY
|
||||||
|
*/
|
||||||
|
if ((bool) enterprise_installed() === true) {
|
||||||
|
$this->checkLibaryError();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -2806,4 +2822,30 @@ class ConsoleSupervisor
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Chechs if an agent has a dependency eror on omnishell
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function checkLibaryError()
|
||||||
|
{
|
||||||
|
$sql = 'SELECT COUNT(errorlevel) from tremote_command_target WHERE errorlevel = 2';
|
||||||
|
|
||||||
|
$error_dependecies = db_get_sql($sql);
|
||||||
|
if ($error_dependecies > 0) {
|
||||||
|
$this->notify(
|
||||||
|
[
|
||||||
|
'type' => 'NOTIF.AGENT.LIBRARY',
|
||||||
|
'title' => __('Agent dependency error'),
|
||||||
|
'message' => __(
|
||||||
|
'There are omnishell agents with dependency errors',
|
||||||
|
),
|
||||||
|
|
||||||
|
'url' => '__url__/index.php?sec=gextensions&sec2=enterprise/tools/omnishell',
|
||||||
|
]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user