diff --git a/pandora_agents/unix/pandora_agent b/pandora_agents/unix/pandora_agent
index 9d3cc8cba6..14b1f6f73a 100755
--- a/pandora_agents/unix/pandora_agent
+++ b/pandora_agents/unix/pandora_agent
@@ -556,30 +556,38 @@ BEGIN {
sub runCommand {
my ($self, $ref, $output_mode) = @_;
+ my $result;
if($self->load_libraries()) {
# Functionality possible.
my $command = $self->{'commands'}->{$ref};
- my $result = $self->evaluate_command($ref);
- if (ref($result) eq "HASH") {
- # Process command result.
- if (defined($output_mode) && $output_mode eq 'xml') {
- my $output = '';
- $output .= "\n";
- $output .= " \n";
- $output .= " {'name'}."]]>\n";
- $output .= " \n";
- $output .= " {'error_level'}."]]>\n";
- $output .= " {'stdout'}."]]>\n";
- $output .= " {'stderr'}."]]>\n";
- $output .= " \n";
- $output .= "\n";
+ $result = $self->evaluate_command($ref);
+ } else {
+ $result = {
+ 'stderr' => 'Cannot use commands without YAML dependency, please install it.',
+ 'name' => 'YAML::Tiny',
+ 'error_level' => 2,
+ };
+ }
- return $output;
- }
- return $result;
- } else {
- $self->set_last_error('Failed to process ['.$ref.']: '.$result);
+ if (ref($result) eq "HASH") {
+ # Process command result.
+ if (defined($output_mode) && $output_mode eq 'xml') {
+ my $output = '';
+ $output .= "\n";
+ $output .= " \n";
+ $output .= " {'name'}."]]>\n";
+ $output .= " \n";
+ $output .= " {'error_level'}."]]>\n";
+ $output .= " {'stdout'}."]]>\n";
+ $output .= " {'stderr'}."]]>\n";
+ $output .= " \n";
+ $output .= "\n";
+
+ return $output;
}
+ return $result;
+ } else {
+ $self->set_last_error('Failed to process ['.$ref.']: '.$result);
}
return undef;
diff --git a/pandora_console/include/class/ConsoleSupervisor.php b/pandora_console/include/class/ConsoleSupervisor.php
index 2c04aa0ae3..bfa8e2fd68 100644
--- a/pandora_console/include/class/ConsoleSupervisor.php
+++ b/pandora_console/include/class/ConsoleSupervisor.php
@@ -258,6 +258,14 @@ class ConsoleSupervisor
$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->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',
+ ]
+ );
+ }
+ }
+
+
}