From ab81c71b7ddf9d63b788420315b33e5bf30eef2a Mon Sep 17 00:00:00 2001 From: cedricAbonnel Date: Fri, 9 Feb 2024 00:06:28 +0100 Subject: [PATCH] add 'updateall' script --- .config/files_local-bin | 1 + local/bin/updateall | 69 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 70 insertions(+) create mode 100755 local/bin/updateall diff --git a/.config/files_local-bin b/.config/files_local-bin index 1371fbb..02020a1 100644 --- a/.config/files_local-bin +++ b/.config/files_local-bin @@ -1,3 +1,4 @@ +updateall convertMKV.sh castopod_update.sh mkv_extract.sh diff --git a/local/bin/updateall b/local/bin/updateall new file mode 100755 index 0000000..62d83d0 --- /dev/null +++ b/local/bin/updateall @@ -0,0 +1,69 @@ +#!/bin/bash + +# Mise à jour des machines présentes dans .ssh/config avec choix d'ignorer certaines. + +# Fonction pour mettre à jour avec apt +update_with_apt() { + echo "--- Mise à jour avec apt sur $1" + ssh -tt "$1" 'sudo apt update && sudo apt upgrade --assume-yes' +} + +# Fonction pour mettre à jour avec dnf +update_with_dnf() { + echo "--- Mise à jour avec dnf sur $1" + ssh -tt "$1" 'sudo dnf check-update && sudo dnf upgrade -y' +} + + +# Déclaration d'une fonction pour récupérer les alias à partir du fichier ~/.ssh/config +get_ssh_aliases() { +# Parcours du fichier ~/.ssh/config et récupération du premier Host (excluant "*") + awk 'tolower($1) == "host" && $2 != "*" && !seen[$2]++ {print $2}' ~/.ssh/config + + # Parcours des fichiers dans le dossier ~/.ssh/include et récupération du premier Host (excluant "*") + for include_file in ~/.ssh/include/*; do + awk 'tolower($1) == "host" && $2 != "*" && !seen[$2]++ {print $2}' "$include_file" + done +} + +# Récupérer les alias SSH +machines=($(get_ssh_aliases)) + +# Parcourir la liste des machines + +for machine in "${machines[@]}"; do + # Vérification si le nom de machine est présent dans le fichier .config/updateall-hosts + if grep -q "^$machine " ~/.config/updateall-hosts; then + status=$(grep "^$machine " ~/.config/updateall-hosts | awk '{print $2}') + if [ "$status" = "1" ]; then + echo "--------------------------------------------------------------------------------" + echo "--- Vérification du gestionnaire de paquets sur $machine" + if timeout 5 ssh "$machine" which apt > /dev/null 2>&1; then + update_with_apt "$machine" + elif timeout 5 ssh "$machine" which dnf > /dev/null 2>&1; then + update_with_dnf "$machine" + else + echo "[x] Aucun gestionnaire de paquets trouvé sur $machine" + fi + fi + else + echo "--------------------------------------------------------------------------------" + if timeout 5 ssh "$machine" which apt > /dev/null 2>&1; then + update_with_apt "$machine" + elif timeout 5 ssh "$machine" which dnf > /dev/null 2>&1; then + update_with_dnf "$machine" + else + echo "[x] Aucun gestionnaire de paquets trouvé sur $machine" + fi + read -p "--- Le traitement pour $machine vient de se terminer. Souhaitez-vous le refaire les prochaines fois ? (o/n) " choice + if [ "$choice" = "o" ]; then + echo "$machine 1" >> ~/.config/updateall-hosts + else + echo "$machine 0" >> ~/.config/updateall-hosts + continue + fi + fi + + +done +