Extraermos las suscripciones del Servidor y obtenemos la informacion de cada suscripcion, la salida queda en un archivo de texto.
Copy Text
Copied
Use a different Browser
#!/bin/bash
# ====================================================================================================
# Desarrollado por Mauricio Alpizar.
# Descripcion:
# Obtiene la lista de suscripciones/dominios del servidor y la informacion completa de la INFO.
# y la graba en el archivo subscription_report.txt
# ===================================================================================================
# Listar todas las suscripciones
subscriptions=$(plesk bin subscription --list)
# Archivo de salida
output="subscription_report.txt"
echo "Reporte de suscripciones - $(date)" > $output
# Iterar sobre cada suscripción
for subscription in $subscriptions; do
echo "Procesando: $subscription"
echo "----- $subscription -----" >> $output
plesk bin subscription --info $subscription >> $output
echo "" >> $output
done
echo "Reporte generado en $output"
Analizamos el contenido del archivo mediante la instruccion AWK para extraer la informacion referente al espacio asignado y el utilizado, con la regla de control de validacion IF, si el espacio usado es mayor al asignado.
Copy Text
Copied
Use a different Browser
#!/bin/bash
# ====================================================================================================
# Desarrollado por Mauricio Alpizar.
# Descripcion:
# Analiza todo el contenido del archivo subscription_report.txt, y por medio del comando AWK
# obtiene aquellos dominios o suscriciones que superan el limite asignado.
# ===================================================================================================
# Archivo de entrada con la información de las suscripciones
input_file="subscription_report.txt"
# Archivo de salida en formato CSV
output_file="disk_usage.csv"
# Encabezado del archivo CSV
echo "Suscripción,Límite de Espacio (GB),Espacio Usado (GB)" > "$output_file"
awk '
{
# Elimina espacios y tabulaciones en exceso
gsub(/^[ t]+|[ t]+$/, "", $0);
}
/^Domain name:/ { name=$3 }
/^Disk space limit:/ {
match($0, /([0-9.]+) GB/, arr); # Captura solo el número antes de "GB"
limit_gb = arr[1] + 0; # Convierte a número (evita valores vacíos)
}
/^Size:/ {
match($0, /([0-9.]+) GB/, arr);
used_gb = arr[1] + 0;
if (used_gb > limit_gb) {
print name "," limit_gb "," used_gb >> "'$output_file'"
}
}' "$input_file"
echo "El archivo CSV ha sido generado: $output_file"
La salida del proceso anterior es un nuevo archivo con el resultado de todas las suscripciones que cumplen con la condicion de validacion, y las separa por coma, en un archivo .CSV. Luego este script procesa la informacion y realiza un insercion de datos en la tabla del MySQL.
Copy Text
Copied
Use a different Browser
#!/bin/bash
# ====================================================================================================
# Desarrollado por Mauricio Alpizar.
# Descripcion:
# Realiza la insercion de datos en el CRM en funcion del contenido del archivo llamado "disk_usage.csv".
# para mapear aquellos clientes con sobreutilizacion de espacio en disco.
# ===================================================================================================
# Configuración de MySQL
DB_HOST="" # Cambia si MySQL está en otro servidor
DB_USER="" # Usuario de MySQL
DB_PASS="" # Contraseña de MySQL
DB_NAME="" # Nombre de la base de datos
TABLE_NAME=""
## COLOCAR EL NOMBRE DEL SERVER EJEMPLO SERVER15.DOMINIO.COM
SERVER=""
# Archivo CSV con los datos
input_file="disk_usage.csv"
# Verificar si el archivo existe
if [[ ! -f "$input_file" ]]; then
echo "Error: El archivo $input_file no existe."
exit 1
fi
# Comando para ELIMINAR el contenido en la base de datos CRM del SERVER FUENTE
SQL_TRUNCATE="DELETE FROM espacio_dominios_on_plesk WHERE servidor = '$SERVER';"
# Ejecutar el comando en la base de datos CRM
mysql -h "$DB_HOST" -u "$DB_USER" -p"$DB_PASS" "$DB_NAME" -e "$SQL_TRUNCATE"
# Obtener la fecha y hora actual en formato 'YYYY-MM-DD HH:MM:SS'
current_datetime=$(date "+%Y-%m-%d %H:%M:%S")
# Insertar datos en MySQL
echo "Insertando datos en MySQL..."
while IFS=, read -r subscription limit_gb used_gb; do
# Ignorar la cabecera del CSV
if [[ "$subscription" != "Suscripción" ]]; then
mysql -h "$DB_HOST" -u "$DB_USER" -p"$DB_PASS" "$DB_NAME" -e
"INSERT INTO $TABLE_NAME (dominio, disk_limit_gb, disk_used_gb, servidor, fecha_actualizacion) VALUES ('$subscription', $limit_gb, $used_gb, '$SERVER', '$current_datetime' );"
fi
done < "$input_file"
echo "Datos insertados en MySQL correctamente."