From 7efc44afe49459fe5149b4a31f1a3a60e8b3d80d Mon Sep 17 00:00:00 2001
From: qgarnier <qgarnier@centreon.com>
Date: Tue, 7 Nov 2017 18:00:07 +0100
Subject: [PATCH] enhance dynamic command

---
 centreon-plugins/centreon/plugins/snmp.pm          |  5 +++--
 .../snmp_standard/mode/dynamiccommand.pm           | 14 +++++++-------
 2 files changed, 10 insertions(+), 9 deletions(-)

diff --git a/centreon-plugins/centreon/plugins/snmp.pm b/centreon-plugins/centreon/plugins/snmp.pm
index 786481d9d..7e42f2b50 100644
--- a/centreon-plugins/centreon/plugins/snmp.pm
+++ b/centreon-plugins/centreon/plugins/snmp.pm
@@ -570,10 +570,11 @@ sub set {
         # Get last value
         next if ($oid !~ /(.*)\.(\d+)([\.\s]*)$/);
         
-        my $value = $options{oids}->{$oid};
+        my $value = $options{oids}->{$oid}->{value};
+        my $type = $options{oids}->{$oid}->{type};
         my ($oid, $instance) = ($1, $2);
        
-        push @$vars, [$oid, $instance, $value];
+        push @$vars, [$oid, $instance, $value, $type];
     }
     
     $self->{session}->set($vars);
diff --git a/centreon-plugins/snmp_standard/mode/dynamiccommand.pm b/centreon-plugins/snmp_standard/mode/dynamiccommand.pm
index be9b70b2a..9169dd2a6 100644
--- a/centreon-plugins/snmp_standard/mode/dynamiccommand.pm
+++ b/centreon-plugins/snmp_standard/mode/dynamiccommand.pm
@@ -86,10 +86,10 @@ sub create_command {
     my ($self, %options) = @_;
     my $oids2set = {};
 
-    $oids2set->{$oid_nsExtendStatus . '.' . $options{instance}} = 4;
-    $oids2set->{$oid_nsExtendArgs . '.' . $options{instance}} = $self->{option_results}->{args};
-    $oids2set->{$oid_nsExtendCommand . '.' . $options{instance}} = $self->{option_results}->{command};
-    $oids2set->{$oid_nsExtendExecType . '.' . $options{instance}} = defined($self->{option_results}->{shell}) ? 2 : 1;
+    $oids2set->{$oid_nsExtendStatus . '.' . $options{instance}} = { value => 4, type => 'INTEGER' };
+    $oids2set->{$oid_nsExtendArgs . '.' . $options{instance}} = { value => $self->{option_results}->{args}, type => 'OCTETSTR' };
+    $oids2set->{$oid_nsExtendCommand . '.' . $options{instance}} = { value => $self->{option_results}->{command}, type => 'OCTETSTR' };
+    $oids2set->{$oid_nsExtendExecType . '.' . $options{instance}} = { value => (defined($self->{option_results}->{shell}) ? 2 : 1), type => 'INTEGER' };
     $self->{snmp}->set(oids => $oids2set);
 }
 
@@ -106,15 +106,15 @@ sub update_command {
     my $oids2set = {};
     if (!defined($options{result}->{$oid_nsExtendCommand . '.' . $options{instance}}) || 
         $options{result}->{$oid_nsExtendCommand . '.' . $options{instance}} ne $self->{option_results}->{command}) {
-        $oids2set->{$oid_nsExtendCommand . '.' . $options{instance}} = $self->{option_results}->{command};
+        $oids2set->{$oid_nsExtendCommand . '.' . $options{instance}} = { value => $self->{option_results}->{command}, type => 'OCTETSTR' };
     }
     if (!defined($options{result}->{$oid_nsExtendArgs . '.' . $options{instance}}) || 
         $options{result}->{$oid_nsExtendArgs . '.' . $options{instance}} ne $self->{option_results}->{args}) {
-        $oids2set->{$oid_nsExtendArgs . '.' . $options{instance}} = $self->{option_results}->{args};
+        $oids2set->{$oid_nsExtendArgs . '.' . $options{instance}} = { value => $self->{option_results}->{args}, type => 'OCTETSTR' };
     }
     if (!defined($options{result}->{$oid_nsExtendExecType . '.' . $options{instance}}) || 
         $options{result}->{$oid_nsExtendExecType . '.' . $options{instance}} ne $shell) {
-        $oids2set->{$oid_nsExtendExecType . '.' . $options{instance}} = $shell;
+        $oids2set->{$oid_nsExtendExecType . '.' . $options{instance}} = { value => $shell, type => 'INTEGER' };
     }
     
     if (scalar(keys %$oids2set) > 0) {