Actualizar plesk/switchphpversion.sh
This commit is contained in:
+11
-14
@@ -25,41 +25,38 @@ fi
|
|||||||
|
|
||||||
get_handlers() {
|
get_handlers() {
|
||||||
# Obtenemos la lista de handlers. Formato esperado de 'plesk bin php_handler --list':
|
# Obtenemos la lista de handlers. Formato esperado de 'plesk bin php_handler --list':
|
||||||
# id: display name: full version: version: type: cgi-bin: php-cli: php.ini: custom: status:
|
# id | display name | full version | version | type | cgi-bin | php-cli | php.ini | custom | status
|
||||||
# cgi 5.4.16 by OS vendor 5.4.16 5.4 cgi /usr/bin/php-cgi /usr/bin/php /etc/php.ini true disabled
|
|
||||||
|
|
||||||
# Usamos awk para extraer ID y DisplayName de las lineas que no son cabecera
|
|
||||||
# Filtramos por status enabled/broken? Mejor solo mostrar los disponibles en NEW, pero mostrar todos en OLD.
|
|
||||||
|
|
||||||
# Array global: HANDLER_IDS, HANDLER_NAMES
|
# Array global: HANDLER_IDS, HANDLER_NAMES
|
||||||
HANDLER_IDS=()
|
HANDLER_IDS=()
|
||||||
HANDLER_NAMES=()
|
HANDLER_NAMES=()
|
||||||
|
|
||||||
# Leer salida comando (saltando cabeceras que suelen tener 'id:')
|
# Usamos ' +' (2+ espacios) como separador en awk para preservar el display name
|
||||||
|
# que puede contener espacios (ej: "8.3.30 by Vendor")
|
||||||
while read -r line; do
|
while read -r line; do
|
||||||
# ID es la primera columna.
|
# ID es la primera columna.
|
||||||
local hid=$(echo "$line" | awk '{print $1}')
|
local hid=$(echo "$line" | awk -F' +' '{print $1}')
|
||||||
if [[ "$hid" == "id:" || -z "$hid" ]]; then continue; fi
|
if [[ "$hid" == "id:" || -z "$hid" ]]; then continue; fi
|
||||||
|
|
||||||
|
# Display name es la segunda columna (separada por 2+ espacios, contiene espacios internos).
|
||||||
|
local dname=$(echo "$line" | awk -F' +' '{print $2}')
|
||||||
|
|
||||||
HANDLER_IDS+=("$hid")
|
HANDLER_IDS+=("$hid")
|
||||||
|
|
||||||
# Extraer información relevante para mostrar al usuario
|
# Versión: primer patrón numérico
|
||||||
# Versión: primer patrón que parezca un número de versión
|
|
||||||
local ver=$(echo "$line" | grep -oE '[0-9]+\.[0-9]+(\.[0-9]+)?' | head -1)
|
local ver=$(echo "$line" | grep -oE '[0-9]+\.[0-9]+(\.[0-9]+)?' | head -1)
|
||||||
|
|
||||||
# Tipo: buscamos palabras clave conocidas (fpm, fastcgi, cgi)
|
# Tipo
|
||||||
# Usamos espacios alrededor para evitar coincidencias parciales si es posible
|
|
||||||
local type=$(echo "$line" | grep -oE '[[:space:]](fpm|fastcgi|cgi|module)[[:space:]]' | head -1 | awk '{print $1}')
|
local type=$(echo "$line" | grep -oE '[[:space:]](fpm|fastcgi|cgi|module)[[:space:]]' | head -1 | awk '{print $1}')
|
||||||
if [ -z "$type" ]; then
|
if [ -z "$type" ]; then
|
||||||
# Fallback: intentar buscar sin espacios si está al final o principio (menos probable en medio del output de plesk)
|
|
||||||
type=$(echo "$line" | grep -oE '(fpm|fastcgi|cgi|module)' | head -1)
|
type=$(echo "$line" | grep -oE '(fpm|fastcgi|cgi|module)' | head -1)
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Contar dominios usándolo
|
# Contar dominios usándolo
|
||||||
local dcount=$(plesk db -Ne "SELECT COUNT(d.id) FROM domains d JOIN hosting h ON h.dom_id=d.id WHERE d.htype = 'vrt_hst' AND h.php_handler_id = '$hid'")
|
local dcount=$(plesk db -Ne "SELECT COUNT(d.id) FROM domains d JOIN hosting h ON h.dom_id=d.id WHERE d.htype = 'vrt_hst' AND h.php_handler_id = '$hid'")
|
||||||
|
|
||||||
# Formato: plesk-php83-fpm (PHP 8.3.30 - fpm) - Dominios: 5
|
# Formato: id [display name] (PHP ver | tipo) - Dominios: N
|
||||||
HANDLER_NAMES+=("$hid (PHP $ver | $type) - Dominios: $dcount")
|
HANDLER_NAMES+=("$hid [$dname] (PHP $ver | $type) - Dominios: $dcount")
|
||||||
|
|
||||||
done < <(plesk bin php_handler --list | grep -v "id:")
|
done < <(plesk bin php_handler --list | grep -v "id:")
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user