diff --git a/cacti.sql b/cacti.sql index 1824507eb..4e89dbdb3 100644 --- a/cacti.sql +++ b/cacti.sql @@ -379,6 +379,7 @@ CREATE TABLE `automation_snmp_items` ( `snmp_priv_passphrase` varchar(200) DEFAULT '', `snmp_priv_protocol` char(6) DEFAULT '', `snmp_context` varchar(64) DEFAULT '', + `snmp_engine_id` varchar(30) DEFAULT '', PRIMARY KEY (`id`,`snmp_id`) ) ENGINE=InnoDB AUTO_INCREMENT=3 COMMENT='Set of SNMP Options'; @@ -386,7 +387,7 @@ CREATE TABLE `automation_snmp_items` ( -- Dumping data for table `automation_snmp_items` -- -INSERT INTO `automation_snmp_items` VALUES (1,1,1,'2','public',161,1000,3,10,'admin','baseball','MD5','','DES',''),(2,1,2,'2','private',161,1000,3,10,'admin','baseball','MD5','','DES',''); +INSERT INTO `automation_snmp_items` VALUES (1,1,1,'2','public',161,1000,3,10,'admin','baseball','MD5','','DES','',''),(2,1,2,'2','private',161,1000,3,10,'admin','baseball','MD5','','DES','',''); -- -- Table structure for table `automation_templates` diff --git a/install/0_8_8h_to_1_0_0.php b/install/0_8_8h_to_1_0_0.php index a1fb31338..d7d29275b 100644 --- a/install/0_8_8h_to_1_0_0.php +++ b/install/0_8_8h_to_1_0_0.php @@ -1576,4 +1576,5 @@ function upgrade_to_1_0_0() { db_install_execute('1.0.0', 'ALTER TABLE host ADD COLUMN snmp_engine_id varchar(30) default "" AFTER snmp_context'); db_install_execute('1.0.0', 'ALTER TABLE poller_item ADD COLUMN snmp_engine_id varchar(30) default "" AFTER snmp_context'); + db_install_execute('1.0.0', 'ALTER TABLE automation_snmp_items ADD COLUMN snmp_engine_id varchar(30) default "" AFTER snmp_context'); } diff --git a/lib/api_automation.php b/lib/api_automation.php index 4dabbd057..ba2812a56 100644 --- a/lib/api_automation.php +++ b/lib/api_automation.php @@ -2659,6 +2659,7 @@ function automation_add_device ($device, $web = false) { $snmp_priv_passphrase = $device['snmp_priv_passphrase']; $snmp_priv_protocol = $device['snmp_priv_protocol']; $snmp_context = $device['snmp_context']; + $snmp_engine_id = $device['snmp_engine_id']; $device_threads = isset($device['device_threads']) ? $device['device_threads']:1; $max_oids = isset($device['max_oids']) ? $device['max_oids']:10; @@ -2669,7 +2670,7 @@ function automation_add_device ($device, $web = false) { $snmp_port, $snmp_timeout, $disable, $availability_method, $ping_method, $ping_port, $ping_timeout, $ping_retries, $notes, $snmp_auth_protocol, $snmp_priv_passphrase, - $snmp_priv_protocol, $snmp_context, $max_oids, $device_threads); + $snmp_priv_protocol, $snmp_context, $snmp_engine_id, $max_oids, $device_threads); if ($host_id) { if (!$web) { @@ -3011,36 +3012,31 @@ function automation_valid_snmp_device (&$device) { $device['snmp_priv_passphrase'] = $item['snmp_priv_passphrase']; $device['snmp_priv_protocol'] = $item['snmp_priv_protocol']; $device['snmp_context'] = $item['snmp_context']; + $device['snmp_engine_id'] = $item['snmp_engine_id']; + $device['max_oids'] = $item['max_oids']; - /* Community string is not used for v3 */ - $snmp_sysObjectID = @cacti_snmp_get( - $device['ip_address'], - $device['snmp_readstring'], - '.1.3.6.1.2.1.1.2.0', - $device['snmp_version'], - $device['snmp_username'], - $device['snmp_password'], - $device['snmp_auth_protocol'], - $device['snmp_priv_passphrase'], - $device['snmp_priv_protocol'], - $device['snmp_context'], - $device['snmp_port'], - $device['snmp_timeout'], - $device['snmp_retries'] - ); + $session = cacti_snmp_session($device['hostname'], $device['snmp_readstring'], $device['snmp_version'], + $device['snmp_username'], $device['snmp_password'], $device['snmp_auth_protocol'], $device['snmp_priv_passphrase'], + $device['snmp_priv_protocol'], $device['snmp_context'], $device['snmp_engine_id'], $device['snmp_port'], + $device['snmp_timeout'], $device['snmp_retries'], $device['max_oids']); - if ($snmp_sysObjectID != 'U') { - $snmp_sysObjectID = str_replace('enterprises', '.1.3.6.1.4.1', $snmp_sysObjectID); - $snmp_sysObjectID = str_replace('OID: ', '', $snmp_sysObjectID); - $snmp_sysObjectID = str_replace('.iso', '.1', $snmp_sysObjectID); + if ($session !== false) { + /* Community string is not used for v3 */ + $snmp_sysObjectID = cacti_snmp_session_get($session, '.1.3.6.1.2.1.1.2.0'); - if ((strlen($snmp_sysObjectID)) && - (!substr_count($snmp_sysObjectID, 'No Such Object')) && - (!substr_count($snmp_sysObjectID, 'Error In'))) { - $snmp_sysObjectID = trim(str_replace('"', '', $snmp_sysObjectID)); - $device['snmp_status'] = HOST_UP; - $host_up = TRUE; - break; + if ($snmp_sysObjectID != 'U') { + $snmp_sysObjectID = str_replace('enterprises', '.1.3.6.1.4.1', $snmp_sysObjectID); + $snmp_sysObjectID = str_replace('OID: ', '', $snmp_sysObjectID); + $snmp_sysObjectID = str_replace('.iso', '.1', $snmp_sysObjectID); + + if ((strlen($snmp_sysObjectID)) && + (!substr_count($snmp_sysObjectID, 'No Such Object')) && + (!substr_count($snmp_sysObjectID, 'Error In'))) { + $snmp_sysObjectID = trim(str_replace('"', '', $snmp_sysObjectID)); + $device['snmp_status'] = HOST_UP; + $host_up = TRUE; + break; + } } } @@ -3056,20 +3052,7 @@ function automation_valid_snmp_device (&$device) { $device['community'] = $device['snmp_readstring']; /* get system name */ - $snmp_sysName = @cacti_snmp_get( - $device['ip_address'], - $device['snmp_readstring'], - '.1.3.6.1.2.1.1.5.0', - $device['snmp_version'], - $device['snmp_username'], - $device['snmp_password'], - $device['snmp_auth_protocol'], - $device['snmp_priv_passphrase'], - $device['snmp_priv_protocol'], - $device['snmp_context'], - $device['snmp_port'], - $device['snmp_timeout'], - $device['snmp_retries']); + $snmp_sysName = cacti_snmp_session_get($session, '.1.3.6.1.2.1.1.5.0'); if (strlen($snmp_sysName)) { $snmp_sysName = trim(strtr($snmp_sysName,"\""," ")); @@ -3077,20 +3060,7 @@ function automation_valid_snmp_device (&$device) { } /* get system location */ - $snmp_sysLocation = @cacti_snmp_get( - $device['ip_address'], - $device['snmp_readstring'], - '.1.3.6.1.2.1.1.6.0', - $device['snmp_version'], - $device['snmp_username'], - $device['snmp_password'], - $device['snmp_auth_protocol'], - $device['snmp_priv_passphrase'], - $device['snmp_priv_protocol'], - $device['snmp_context'], - $device['snmp_port'], - $device['snmp_timeout'], - $device['snmp_retries']); + $snmp_sysLocation = cacti_snmp_session_get($session, '.1.3.6.1.2.1.1.6.0'); if (strlen($snmp_sysLocation)) { $snmp_sysLocation = trim(strtr($snmp_sysLocation,"\""," ")); @@ -3098,20 +3068,7 @@ function automation_valid_snmp_device (&$device) { } /* get system contact */ - $snmp_sysContact = @cacti_snmp_get( - $device['ip_address'], - $device['snmp_readstring'], - '.1.3.6.1.2.1.1.4.0', - $device['snmp_version'], - $device['snmp_username'], - $device['snmp_password'], - $device['snmp_auth_protocol'], - $device['snmp_priv_passphrase'], - $device['snmp_priv_protocol'], - $device['snmp_context'], - $device['snmp_port'], - $device['snmp_timeout'], - $device['snmp_retries']); + $snmp_sysContact = cacti_snmp_session_get($session, '.1.3.6.1.2.1.1.4.0'); if (strlen($snmp_sysContact)) { $snmp_sysContact = trim(strtr($snmp_sysContact,"\""," ")); @@ -3119,20 +3076,7 @@ function automation_valid_snmp_device (&$device) { } /* get system description */ - $snmp_sysDescr = @cacti_snmp_get( - $device['ip_address'], - $device['snmp_readstring'], - '.1.3.6.1.2.1.1.1.0', - $device['snmp_version'], - $device['snmp_username'], - $device['snmp_password'], - $device['snmp_auth_protocol'], - $device['snmp_priv_passphrase'], - $device['snmp_priv_protocol'], - $device['snmp_context'], - $device['snmp_port'], - $device['snmp_timeout'], - $device['snmp_retrues']); + $snmp_sysDescr = cacti_snmp_session_get($session, '.1.3.6.1.2.1.1.1.0'); if (strlen($snmp_sysDescr)) { $snmp_sysDescr = trim(strtr($snmp_sysDescr,"\""," ")); @@ -3140,25 +3084,14 @@ function automation_valid_snmp_device (&$device) { } /* get system uptime */ - $snmp_sysUptime = @cacti_snmp_get( - $device['ip_address'], - $device['snmp_readstring'], - '.1.3.6.1.2.1.1.3.0', - $device['snmp_version'], - $device['snmp_username'], - $device['snmp_password'], - $device['snmp_auth_protocol'], - $device['snmp_priv_passphrase'], - $device['snmp_priv_protocol'], - $device['snmp_context'], - $device['snmp_port'], - $device['snmp_timeout'], - $device['snmp_retries']); + $snmp_sysUptime = cacti_snmp_session_get($session, '.1.3.6.1.2.1.1.3.0'); if (strlen($snmp_sysUptime)) { $snmp_sysUptime = trim(strtr($snmp_sysUptime,"\""," ")); $device["snmp_sysUptime"] = $snmp_sysUptime; } + + $session->close(); }else{ automation_debug(' No response'); }