Desarrollo y bases de datos
Ejemplos de reportes en CSV usando la API de cPanel
En un artículo anterior tratábamos el uso de la API de cPanel para automatizar tareas de todo tipo, en esta nueva entrega daremos ejemplos con los que utilizar esta misma API para generar reportes en formato CSV, formato compatible para abrir con cualquier procesador de hojas de cálculo como Excel o LibreOffice.
Los siguientes scripts definen una llamada local a UAPI, reciben la respuesta en JSON y presentan los datos como filas separadas por punto y coma. Guárdalos fuera de public_html y ejecútalos únicamente desde la terminal. No publiques un fichero que invoque shell_exec() al visitarlo desde el navegador.
Para guardar el resultado, redirige la salida del script a un fichero privado y descárgalo después:
php /home/usuario_cpanel/reportes/reporte.php > /home/usuario_cpanel/reportes/reporte.csv
Acompañamos además cada caso con un enlace a la documentación de la función ejecutada, de forma que podremos ver qué otros valores devuelve cada llamada y añadir al reporte cualquier otro dato que pueda ser de interés.
Extraer listado de cuentas de correo, espacio en uso y límite
Con el siguiente script ejecutamos la función Email list_pops_with_disk para obtener todas las cuentas de correo creadas en el servicio de hosting, acompañadas del espacio en uso y el espacio límite definido.
<?php $command = '/usr/local/cpanel/bin/uapi Email list_pops_with_disk --output=json'; $result = shell_exec($command); $result = json_decode($result)->result->data; echo "Email; Espacio usado; Espacio límite" . PHP_EOL; foreach ($result as $account) { echo "{$account->email}; \"{$account->humandiskused}\"; \"{$account->humandiskquota}\"" . PHP_EOL; }
Listado de reenviadores de un dominio y su dirección destino
La operación Email list_forwarders exige indicar un dominio. Repite el script para cada dominio de la cuenta que quieras incluir.
<?php $domain = 'ejemplo.com'; $command = '/usr/local/cpanel/bin/uapi Email list_forwarders --output=json domain=' . escapeshellarg($domain); $result = shell_exec($command); $result = json_decode($result)->result->data; echo "De; Para" . PHP_EOL; foreach ($result as $account) { echo "{$account->dest}; {$account->forward}" . PHP_EOL; }
Listado de auto-contestadores de un dominio
Por medio de Email list_auto_responders obtenemos los auto-contestadores de un dominio y, para cada uno, ejecutamos Email get_auto_responder para consultar sus fechas y título.
<?php $domain = 'ejemplo.com'; $command = '/usr/local/cpanel/bin/uapi Email list_auto_responders --output=json domain=' . escapeshellarg($domain); $result = shell_exec($command); $result = json_decode($result)->result->data; echo "Cuenta; Fecha inicio; Fecha fin; Título" . PHP_EOL; foreach ($result as $account) { [$mailbox] = explode('@', $account->email, 2); $responderCommand = '/usr/local/cpanel/bin/uapi Email get_auto_responder --output=json email=' . escapeshellarg($mailbox); $responder = shell_exec($responderCommand); $responder = json_decode($responder)->result->data; $start = $responder->start; $stop = $responder->stop; if(is_null($start)) { $start = '-'; } else { $start = date('d/m/Y', (int) $start); } if(is_null($stop)) { $stop = '-'; } else { $stop = date('d/m/Y', (int) $stop); } echo "{$account->email}; {$start}; {$stop}; \"{$responder->subject}\"" . PHP_EOL; }
Listado de tareas programadas, cronjobs
Para el listado de tareas programadas no usamos la API de cPanel ya que no hay una función disponible de momento, no obstante tenemos "crontab -l" un comando disponible en cualquier sistema basado en Linux con el que de igual forma podremos obtener esta información.
<?php $command = 'crontab -l'; $result = shell_exec($command); $result = explode("\n", $result); echo "Intervalo;Comando" . PHP_EOL; foreach ($result as $cron) { $cron = trim($cron); if ( str_starts_with($cron, '#') || str_starts_with($cron, 'MAILTO=') || str_starts_with($cron, 'SHELL=') ) { continue; } if (empty($cron)) { continue; } $cron = preg_split('/\s+/', $cron, 6); if (count($cron) === 6) { echo "{$cron[0]} {$cron[1]} {$cron[2]} {$cron[3]} {$cron[4]}; {$cron[5]}" . PHP_EOL; } }
También te puede ayudar
- Binarios y herramientas disponibles FFmpeg, Tesseract, ImageMagick, cURL y más Consulta los binarios disponibles para vídeo, imágenes, PDF, OCR, redes, DNS, control de versiones y...
- Crear y ejecutar tareas cron (Cronjobs) en cPanel Configura tareas cron en cPanel, define intervalos y comandos, gestiona avisos, ejecuta URLs con cUR...
- Eliminar correos antiguos de forma segura Limpia correo antiguo sin borrar Maildir a ciegas; valida la cuenta y carpeta, prueba primero y cons...
- Instalación y actualización automática de FFmpeg Instala, actualiza o elimina FFmpeg desde el gestor de paquetes y configura las rutas de ffmpeg y ff...
¿Algo no cuadra o ha cambiado? Cuéntanoslo y lo revisamos.