60 lines
1.6 KiB
JavaScript
60 lines
1.6 KiB
JavaScript
/**
|
|
* Zabbix JavaScript para consulta de datos MAC por puerto
|
|
* Compatible con versiones antiguas - Funciona con Zabbix 4.x, 5.x y 6.x
|
|
* Formato de respuesta estructurado por puertos
|
|
*/
|
|
|
|
// Configuración mediante macros
|
|
var serviceUrl = "{$CISCO_SERVICE_URL}";
|
|
var ciscoHost = "{$CISCO_HOST}";
|
|
var ciscoUsername = "{$CISCO_USERNAME}";
|
|
var ciscoPassword = "{$CISCO_PASSWORD}";
|
|
|
|
// Validar parámetros requeridos
|
|
if (!serviceUrl || !ciscoHost || !ciscoUsername || !ciscoPassword) {
|
|
throw "Faltan parámetros: CISCO_SERVICE_URL, CISCO_HOST, CISCO_USERNAME, CISCO_PASSWORD";
|
|
}
|
|
|
|
// Log de inicio
|
|
Zabbix.Log(4, "[Cisco MAC] Host: " + ciscoHost);
|
|
|
|
// Preparar datos para POST
|
|
var postData = JSON.stringify({
|
|
"host": ciscoHost,
|
|
"username": ciscoUsername,
|
|
"password": ciscoPassword,
|
|
"port": 22,
|
|
"timeout": 30
|
|
});
|
|
|
|
// Crear request HTTP (método básico compatible)
|
|
var req = new HttpRequest();
|
|
req.addHeader('Content-Type: application/json');
|
|
|
|
try {
|
|
// Hacer consulta POST
|
|
var response = req.post(serviceUrl , postData);
|
|
|
|
// Verificar status
|
|
if (req.getStatus() !== 200) {
|
|
throw "HTTP Error " + req.getStatus();
|
|
}
|
|
|
|
// Parsear respuesta
|
|
var jsonData = JSON.parse(response);
|
|
|
|
// Validar estructura
|
|
if (!jsonData.data) {
|
|
throw "Invalid response structure";
|
|
}
|
|
|
|
// Log de éxito
|
|
Zabbix.Log(4, "[Cisco MAC] Success: " + jsonData.data.length + " ports");
|
|
|
|
// Retornar datos estructurados por puertos
|
|
return JSON.stringify(jsonData);
|
|
|
|
} catch (error) {
|
|
Zabbix.Log(2, "[Cisco MAC] ERROR: " + error);
|
|
throw "Cisco MAC query failed: " + error;
|
|
} |