#!/usr/bin/env php '.1.3.6.1.2.1.25.3.3.1.2', 'usage' => '.1.3.6.1.2.1.25.3.3.1.2' ]; if (($cmd == 'index')) { $value = api_plugin_hook_function('hmib_get_cpu_indexes', ['host_id' => $host_id]); if (is_array($value)) { $arr_index = ss_host_cpu_get_indexes($hostname, $snmp_community, $snmp_version, $snmp_auth_username, $snmp_auth_password, $snmp_auth_protocol, $snmp_priv_passphrase, $snmp_priv_protocol, $snmp_context, $snmp_port, $snmp_timeout, $snmp_retries, $max_oids); if (cacti_sizeof($arr_index)) { foreach ($arr_index as $value) { print $value . "\n"; } } } else { $indexes = explode(',', $value); foreach ($indexes as $index) { print $index . "\n"; } } } elseif (($cmd == 'num_indexes')) { $value = api_plugin_hook_function('hmib_get_cpu_indexes', ['host_id' => $host_id]); if (is_array($value)) { $arr_index = ss_host_cpu_get_indexes($hostname, $snmp_community, $snmp_version, $snmp_auth_username, $snmp_auth_password, $snmp_auth_protocol, $snmp_priv_passphrase, $snmp_priv_protocol, $snmp_context, $snmp_port, $snmp_timeout, $snmp_retries, $max_oids); return cacti_sizeof($arr_index); } else { $indexes = explode(',', $value); return cacti_sizeof($indexes); } } elseif ($cmd == 'query') { $value = api_plugin_hook_function('hmib_get_cpu_indexes', ['host_id' => $host_id]); if (is_array($value)) { $arg = $arg1; $arr_index = ss_host_cpu_get_indexes($hostname, $snmp_community, $snmp_version, $snmp_auth_username, $snmp_auth_password, $snmp_auth_protocol, $snmp_priv_passphrase, $snmp_priv_protocol, $snmp_context, $snmp_port, $snmp_timeout, $snmp_retries, $max_oids); $arr = ss_host_cpu_get_cpu_usage($hostname, $snmp_community, $snmp_version, $snmp_auth_username, $snmp_auth_password, $snmp_auth_protocol, $snmp_priv_passphrase, $snmp_priv_protocol, $snmp_context, $snmp_port, $snmp_timeout, $snmp_retries, $max_oids); if (cacti_sizeof($arr_index)) { foreach ($arr_index as $index => $value) { if ($arg == 'usage') { print $index . '!' . $arr[$index] . "\n"; } elseif ($arg == 'index') { print $index . '!' . $value . "\n"; } } } } else { $indexes = explode(',', $value); foreach ($indexes as $index) { print $index . '!' . $index . "\n"; } } } elseif ($cmd == 'get') { $arg = $arg1; $index = rtrim($arg2); $value = api_plugin_hook_function('hmib_get_cpu', ['host_id' => $host_id, 'arg' => $arg, 'index' => $index]); if (is_array($value)) { $arr_index = ss_host_cpu_get_indexes($hostname, $snmp_community, $snmp_version, $snmp_auth_username, $snmp_auth_password, $snmp_auth_protocol, $snmp_priv_passphrase, $snmp_priv_protocol, $snmp_context, $snmp_port, $snmp_timeout, $snmp_retries, $max_oids); $arr = ss_host_cpu_get_cpu_usage($hostname, $snmp_community, $snmp_version, $snmp_auth_username, $snmp_auth_password, $snmp_auth_protocol, $snmp_priv_passphrase, $snmp_priv_protocol, $snmp_context, $snmp_port, $snmp_timeout, $snmp_retries, $max_oids); if (isset($arr_index[$index]) && isset($arr[$index])) { return $arr[$index]; } else { return 'U'; } } else { return $value; } } return null; } function ss_host_cpu_get_cpu_usage(string $hostname, string $snmp_community, int $snmp_version, string $snmp_auth_username, string $snmp_auth_password, string $snmp_auth_protocol, string $snmp_priv_passphrase, string $snmp_priv_protocol, string $snmp_context, int $snmp_port, int $snmp_timeout, int $snmp_retries, int $max_oids) : array { $arr = ss_host_cpu_reindex(cacti_snmp_walk($hostname, $snmp_community, '.1.3.6.1.2.1.25.3.3.1.2', $snmp_version, $snmp_auth_username, $snmp_auth_password, $snmp_auth_protocol, $snmp_priv_passphrase, $snmp_priv_protocol, $snmp_context, $snmp_port, $snmp_timeout, $snmp_retries, $max_oids, SNMP_POLLER)); $return_arr = []; $sum = 0; if (cacti_sizeof($arr)) { foreach ($arr as $index => $value) { if (is_numeric($value)) { $return_arr[$index] = $value; $sum += $value; } } if (cacti_sizeof($return_arr)) { $return_arr[4000] = round($sum / cacti_sizeof($return_arr)); } else { $return_arr[4000] = 0; } return $return_arr; } else { return []; } } function ss_host_cpu_get_indexes(string $hostname, string $snmp_community, int $snmp_version, string $snmp_auth_username, string $snmp_auth_password, string $snmp_auth_protocol, string $snmp_priv_passphrase, string $snmp_priv_protocol, string $snmp_context, int $snmp_port, int $snmp_timeout, int $snmp_retries, int $max_oids) : array { $arr = ss_host_cpu_reindex(cacti_snmp_walk($hostname, $snmp_community, '.1.3.6.1.2.1.25.3.3.1.2', $snmp_version, $snmp_auth_username, $snmp_auth_password, $snmp_auth_protocol, $snmp_priv_passphrase, $snmp_priv_protocol, $snmp_context, $snmp_port, $snmp_timeout, $snmp_retries, $max_oids, SNMP_POLLER)); $return_arr = []; if (cacti_sizeof($arr)) { foreach ($arr as $index => $value) { if (is_numeric($value)) { $return_arr[$index] = $index; } } $return_arr[4000] = 'Total'; } return $return_arr; } function ss_host_cpu_reindex(array $arr) : array { $return_arr = []; if (cacti_sizeof($arr)) { foreach ($arr as $index => $value) { $return_arr[$index] = $value['value']; } } return $return_arr; }