#!/bin/bash # Script: actualizar.sh # Descripción: Este script de bash tiene como objetivo actualizar y limpiar un # sistema Linux. Utiliza colores para mensajes y maneja la salida # de forma controlada con Ctrl + C. Presenta títulos para cada # sección, como la limpieza de paquetes innecesarios, la # actualización de repositorios y la actualización de paquetes # snap. Además, solicita confirmación antes de realizar ciertas # operaciones, como la actualización de paquetes. La última sección # agradece al usuario por mantener su sistema actualizado. # Author: Manuel Vergara # Web: https://vergaracarmona.es # # Colores COLOR_RED='\e[31m' COLOR_BLUE='\e[34m' COLOR_RESET='\e[0m' # Control de salida con Ctrl + C function ctrl_c() { echo -e "${COLOR_RED}\n\n[!] Saliendo... \n${COLOR_RESET}" tput cnorm log_message "El script se ha detenido debido a una interrupción del usuario." exit 1 } # Ctrl+C trap ctrl_c SIGINT # Títulos function print_title { local title="$1" local title_length=${#title} local total_length=22 # Calcular el tamaño del margen izquierdo y derecho local margin_length=$(((total_length - title_length - 4) / 2)) # Asegurarse de que el número total de almohadillas sea siempre 22 local left_padding=$((margin_length)) local right_padding=$((margin_length + (title_length % 2))) echo -e "${COLOR_BLUE}\n$(printf '#%.0s' $(seq 1 $left_padding))#### $title ####$(printf '#%.0s' $(seq 1 $right_padding))\n${COLOR_RESET}" } # Verificar permisos de superusuario if [ "$EUID" -ne 0 ]; then echo "Este script debe ejecutarse con privilegios de superusuario." log_message "Error: Este script debe ejecutarse con privilegios de superusuario." exit 1 fi # Logging LOG_FILE="/var/log/linux_update_script.log" function log_message() { local message="$1" echo "$(date '+%Y-%m-%d %H:%M:%S') - $message" >>"$LOG_FILE" } log_message "Iniciando el script de actualización y limpieza." print_title "ANEM A ACTUALITZAR" print_title "AUTOREMOVE" sudo apt-get autoremove -y print_title "AUTOCLEAN" sudo apt-get autoclean print_title "UPDATE REPOS" sudo apt-get update upgradable=$(apt-get -s dist-upgrade | grep "^Inst") if [[ -n "$upgradable" ]]; then echo -e "\nS'han trobat actualitzacions disponibles: " apt list --upgradable read -p "¿Vols actualitzar els paquets? (s/n) " confirm if [[ "$confirm" == "s" ]]; then sudo apt-get upgrade -y echo -e "\nActualitzacions fetes" fi else echo "No hi ha actualitzacions disponibles amb el gestor de paquets \"apt\"." fi print_title "ACTUALITZEM SNAPs" refresh_list=$(sudo snap refresh --list) if [[ -n "$refresh_list" ]]; then echo -e "\nS'han trobat actualitzacions disponibles:" echo "$refresh_list" read -p "¿Vols actualitzar els paquets? (s/n) " confirm if [[ "$confirm" == "s" ]]; then sudo snap refresh fi else echo "No hi ha actualitzacions disponibles amb el gestor de paquets \"snap\"." fi log_message "El script se ha ejecutado correctamente." print_title "GRACIES PER ACTUALITZAR EL SISTEMA"