add 'updateall' script
This commit is contained in:
parent
8315bddba6
commit
ab81c71b7d
|
@ -1,3 +1,4 @@
|
||||||
|
updateall
|
||||||
convertMKV.sh
|
convertMKV.sh
|
||||||
castopod_update.sh
|
castopod_update.sh
|
||||||
mkv_extract.sh
|
mkv_extract.sh
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue