111 lines
3.2 KiB
Bash
111 lines
3.2 KiB
Bash
|
#!/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"
|