Files
BashAdmin/bashadmin.sh
2024-08-01 22:37:10 +02:00

170 lines
4.7 KiB
Bash
Executable File

#!/bin/bash
######################################################
# AUTEUR : Morgan JUBAULT
# DATE : 01/08/2024
#
# VERSION : 1.0
#
# TITRE : BashAdmin
# DESC : Gérez votre serveur à l'aide d'un menu
# EXEC : ./bashadmin.sh
######################################################
################################### LICENSING #######################################
# - Vous avez le droit de MODIFIER, d'ADAPTER le code de ce script à votre guise #
# - Vous avez le droit de PARTAGER votre version du code, en citant l'auteur du #
# code original #
#####################################################################################
# Versions de BashAdmin
# Version locale
version="1.0"
onlineVersion=""
##### RÉFÉRENTIEL DE COULEURS #####
couleurErreur="\033[0;31m"
couleurErreurGras="\033[1;31m"
couleurAvert="\033[0;33m"
couleurAvertGras="\033[1;33m"
couleurSucces="\033[0;32m"
couleurSuccesGras="\033[1;32m"
couleurNormal="\033[0m"
couleurNormalGras="\033[1m"
couleurCyan="\033[0;36m"
couleurCyanGras="\033[1;36m"
###################################
##### FONCTIONS #####
function verifierMaj()
{
versionUrl="https://git.mjubault.fr/mjubault/BashAdmin/raw/branch/main/version.txt"
if [[ "$(curl -sI "${versionUrl}" | head -n 1 | cut -d' ' -f2)" == "200" ]]; then
# S'il est possible de récupérer la version en ligne, alors faire la comparaison des deux variables...
onlineVersion=$(curl -s "${versionUrl}")
if [[ "$onlineVersion" != "$version" ]]; then
# Si une mise à jour est disponible, alors demander
read -p "Une nouvelle mise à jour de BashAdmin vers la v${onlineVersion} est disponible, voulez-vous l'installer ? [y/N] " choix trash
case $choix in
Y|y)
appliquerMaj
;;
*)
;;
esac
fi
else
# Sinon, afficher un message à l'utilisateur
echo -e "${couleurErreurGras}ERREUR : ${couleurErreur}Impossible de vérifier les mises à jour ! ${couleurNormal}"
echo -e "${couleurErreur}Êtes-vous connecté à Internet ? ${couleurNormal}"
echo $(curl -sI "${versionUrl}" | head -n 1)
fi
}
# Démarrer la mise à jour du script
function appliquerMaj()
{
echo ""
echo "Installation de la mise à jour..."
rm bashadmin.sh
wget "https://git.mjubault.fr/mjubault/BashAdmin/raw/branch/main/bashadmin.sh"
echo -e "${couleurSucces}Mise à jour effectuée. ${couleurNormal}"
echo -e "${couleurAvert}Veuillez relancer BashAdmin afin de prendre en compte les modifications. ${couleurNormal}"
echo ""
exit 0
}
function afficherMenu()
{
choix=""
echo ""
echo -e " ${couleurCyanGras}BashAdmin v${version} ${couleurNormal}"
if [[ "${onlineVersion}" != "${version}" ]]; then
echo -e " ${couleurSucces}Mise à jour disponible ${couleurNormal}"
fi
echo ""
echo -e " ${couleurAvertGras}1) ${couleurNormal}Mise à jour du système"
echo -e " ${couleurAvertGras}2) ${couleurNormal}Redémarrer le système"
echo -e " ${couleurAvertGras}3) ${couleurNormal}Arrêter le système"
echo ""
if [[ "${onlineVersion}" != "${version}" ]]; then
echo -e " ${couleurAvertGras}M) ${couleurCyan}Mettre à jour BashAdmin ${couleurNormal}"
fi
echo -e " ${couleurAvertGras}Q) ${couleurErreur}Quitter ${couleurNormal}"
echo ""
# Saisie du choix par l'utilisateur
read -p "Votre choix : " choix trash
# En fonction du choix...
case $choix in
1)
clear
echo -e "${couleurCyan}Mise à jour du système... ${couleurNormal}"
echo ""
apt update && apt upgrade -y && apt autoremove -y
echo ""
afficherMenu
;;
2)
clear
echo -e "${couleurCyan}Redémarrage du système... ${couleurNormal}"
echo ""
reboot
exit 0
;;
3)
clear
echo -e "${couleurCyan}Arrêt du système... ${couleurNormal}"
echo ""
shutdown now
exit 0
;;
M|m)
clear
appliquerMaj
exit 0
;;
Q|q)
clear
exit 0
;;
*)
clear
afficherMenu
;;
esac
}
##### DÉBUT DU PROGRAMME #####
if [[ $USER != "root" ]]; then
echo -e "${couleurErreurGras}ERREUR : ${couleurErreur}Vous n'êtes pas root ! ${couleurNormal}"
exit 0
fi
clear
verifierMaj
afficherMenu