From a492f702985cbdbd53f816a15892f137220e26e6 Mon Sep 17 00:00:00 2001 From: Kevin Puertas Date: Sun, 25 Jan 2026 12:13:38 +0100 Subject: [PATCH] Plesk --- plesk/domainstatus.sh | 136 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 136 insertions(+) create mode 100644 plesk/domainstatus.sh diff --git a/plesk/domainstatus.sh b/plesk/domainstatus.sh new file mode 100644 index 0000000..fd8994b --- /dev/null +++ b/plesk/domainstatus.sh @@ -0,0 +1,136 @@ +#!/bin/bash +# --- CONFIGURACIÓN DE COLORES --- +RED='\033[0;31m' +GREEN='\033[0;32m' +BLUE='\033[0;34m' +YELLOW='\033[1;33m' +NC='\033[0m' # No Color + +# --- CONFIGURACIÓN DE LÍMITES --- +DEFAULT_UPLOAD="8" #MB +DEFAULT_POST="8" #MB +DEFAULT_TIME="30" +RAM_HIGH="256" +PROCESS_LIMIT=5 # Límite para marcar en rojo los procesos + +# --- PRE-CALCULO DE PROCESOS PHP-FPM --- +declare -A PROCESS_MAP + +echo "Analizando procesos PHP-FPM..." + +while read -r count domain; do + domain=$(echo "$domain" | xargs) + PROCESS_MAP["$domain"]=$count +done < <(ps aux | grep 'php-fpm: pool' | grep -v grep | awk '{print $NF}' | sort | uniq -c) + +# --- OBTENER DOMINIOS --- +if command -v plesk &> /dev/null; then + DOMAINS=$(plesk bin site --list) +else + DOMAINS=$(ls /var/www/vhosts/ | grep "\.") +fi + +# --- IMPRIMIR CABECERA --- +# He ajustado los anchos y añadido la columna HANDLER al final +printf "%-30s %-8s %-12s %-12s %-12s %-10s %-10s %-20s\n" "DOMINIO" "PROCS" "RAM (Lim)" "UPLOAD" "POST" "TIME" "PHP VER" "HANDLER" +printf "%s\n" "---------------------------------------------------------------------------------------------------------------------------------" + +for DOMAIN in $DOMAINS; do + # Ignorar carpetas del sistema + if [[ "$DOMAIN" == "system" || "$DOMAIN" == "chroot" || "$DOMAIN" == "default" ]]; then continue; fi + + # 1. BUSCAR PHP.INI + if [ -f "/var/www/vhosts/system/$DOMAIN/etc/php.ini" ]; then + PHP_CONFIG="/var/www/vhosts/system/$DOMAIN/etc/php.ini" + elif [ -f "/var/www/vhosts/$DOMAIN/etc/php.ini" ]; then + PHP_CONFIG="/var/www/vhosts/$DOMAIN/etc/php.ini" + else + PHP_CONFIG="" + fi + + # 2. OBTENER VERSIÓN DE PHP Y HANDLER (Vía Plesk DB) + if command -v plesk &> /dev/null; then + HANDLER_RAW=$(plesk db "select h.php_handler_id from domains d join hosting h on h.dom_id=d.id WHERE d.name='$DOMAIN'" -N 2>/dev/null | grep -v "^\+" | sed 's/|//g' | xargs) + + # Extraemos solo los números para la lógica de colores + PHP_RAW_VER=$(echo "$HANDLER_RAW" | grep -o "[0-9]*" | head -1) + + if [ -z "$PHP_RAW_VER" ]; then + PHP_DISPLAY="?" + PHP_RAW_VER=0 + else + # Formatear 74 -> 7.4, 81 -> 8.1 + if [ ${#PHP_RAW_VER} -ge 2 ]; then + PHP_DISPLAY="${PHP_RAW_VER:0:1}.${PHP_RAW_VER:1:1}" + else + PHP_DISPLAY="$PHP_RAW_VER" + fi + fi + else + PHP_DISPLAY="No CLI" + HANDLER_RAW="-" + PHP_RAW_VER=0 + fi + + # 3. LEER DATOS + if [ ! -z "$PHP_CONFIG" ]; then + MEMORY_LIMIT=$(grep -i "^memory_limit" "$PHP_CONFIG" | cut -d= -f2 | tr -d '[:space:]') + + UPLOAD_MAX=$(grep -i "^upload_max_filesize" "$PHP_CONFIG" | cut -d= -f2 | tr -d '[:space:]') + UPLOAD_NUM=${UPLOAD_MAX//[!0-9]/} + + POST_MAX=$(grep -i "^post_max_size" "$PHP_CONFIG" | cut -d= -f2 | tr -d '[:space:]') + POST_NUM=${POST_MAX//[!0-9]/} + + MAX_EXEC=$(grep -i "^max_execution_time" "$PHP_CONFIG" | cut -d= -f2 | tr -d '[:space:]') + else + MEMORY_LIMIT="No ini" + UPLOAD_MAX="0"; UPLOAD_NUM=0 + POST_MAX="0"; POST_NUM=0 + MAX_EXEC="0" + fi + + # 4. OBTENER PROCESOS DEL ARRAY + PROC_COUNT=${PROCESS_MAP["$DOMAIN"]} + if [ -z "$PROC_COUNT" ]; then PROC_COUNT=0; fi + + # --- LÓGICA DE COLORES --- + + # A) Procesos + COLOR_PROC=$NC + if [ "$PROC_COUNT" -gt "$PROCESS_LIMIT" ]; then COLOR_PROC=$RED; fi + + # B) RAM + COLOR_RAM=$NC + if [[ "$MEMORY_LIMIT" != "No ini" ]]; then + if [[ "$MEMORY_LIMIT" == *"-1"* ]]; then + COLOR_RAM=$GREEN + else + RAM_VAL=$(echo "$MEMORY_LIMIT" | sed 's/[^0-9]*//g') + if [[ "$MEMORY_LIMIT" == *"G"* ]]; then RAM_VAL=$((RAM_VAL * 1024)); fi + if [ "$RAM_VAL" -gt "$RAM_HIGH" ] 2>/dev/null; then COLOR_RAM=$RED; fi + fi + fi + + # C) Upload y Time + COLOR_UPLOAD=$NC + if [ "$UPLOAD_NUM" -gt "$DEFAULT_UPLOAD" ] && [ "$UPLOAD_MAX" != "-" ]; then COLOR_UPLOAD=$BLUE; fi + + COLOR_POST=$NC + if [ "$POST_NUM" -gt "$DEFAULT_POST" ] && [ "$POST_MAX" != "-" ]; then COLOR_POST=$BLUE; fi + + COLOR_TIME=$NC + if [ "$MAX_EXEC" -gt "$DEFAULT_TIME" ] && [ "$MAX_EXEC" != "-" ]; then COLOR_TIME=$BLUE; fi + + # D) PHP Version (Rojo si es 7.4 o inferior) + COLOR_PHP=$GREEN + if [ "$PHP_RAW_VER" -ne 0 ] && [ "$PHP_RAW_VER" -le 74 ] 2>/dev/null; then + COLOR_PHP=$RED + fi + + # --- IMPRIMIR --- + # Se añade HANDLER_RAW al final + printf "%-30s ${COLOR_PROC}%-8s${NC} ${COLOR_RAM}%-12s${NC} ${COLOR_UPLOAD}%-12s${NC} ${COLOR_POST}%-12s${NC} ${COLOR_TIME}%-10s${NC} ${COLOR_PHP}%-10s${NC} %-20s\n" \ + "${DOMAIN:0:29}" "$PROC_COUNT" "$MEMORY_LIMIT" "$UPLOAD_MAX" "$POST_MAX" "$MAX_EXEC" "$PHP_DISPLAY" "$HANDLER_RAW" + +done