Files
2025-12-09 12:45:15 +01:00

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;
}