Compare commits
19 Commits
2629dd832c
...
3f7727ec57
| Author | SHA1 | Date | |
|---|---|---|---|
| 3f7727ec57 | |||
| a73b5d13d2 | |||
| 8a1a871bfc | |||
| b2c2a83f30 | |||
| 59430128f1 | |||
| ac55b0ab90 | |||
| 9608746394 | |||
| bab9c771ae | |||
| 3ae1fa108e | |||
| cabb33cf6e | |||
| bd6434e46a | |||
| 9bf5823fa7 | |||
| 9e165e8e7c | |||
| 3b8b279ad4 | |||
| 8e53c88e95 | |||
| afbb026fd7 | |||
| 1caeb5022a | |||
| 4a57ffccf2 | |||
| 4ac5f3c2e2 |
@@ -1,15 +1,18 @@
|
|||||||
ytdll
|
trierPhotos.php
|
||||||
updateall.sh
|
updateall.sh
|
||||||
update_bullseye2buster.sh
|
castopod_update.sh
|
||||||
|
check_domain_cert.sh
|
||||||
check_sha256.sh
|
check_sha256.sh
|
||||||
generate_playlist.sh
|
|
||||||
generate_playlist_fp.php
|
|
||||||
check_smart.sh
|
check_smart.sh
|
||||||
convertMKV.sh
|
convertMKV.sh
|
||||||
castopod_update.sh
|
convertPDF.sh
|
||||||
|
generate_playlist.sh
|
||||||
mkv_extract.sh
|
mkv_extract.sh
|
||||||
|
play_tophaire.sh
|
||||||
|
png2jpg.sh
|
||||||
podcast_convertImage.sh
|
podcast_convertImage.sh
|
||||||
random_music_player.sh
|
random_music_player.sh
|
||||||
play_tophaire.sh
|
ssh-add-config.sh
|
||||||
convertPDF.sh
|
update_bullseye2buster.sh
|
||||||
check_domain_cert.sh
|
generate_playlist_fp.php
|
||||||
|
ytdll
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
play_tophoraire.1.md
|
|
||||||
convertPDF.1.md
|
|
||||||
castopod_update.1.md
|
castopod_update.1.md
|
||||||
random_music_player.1.md
|
convertPDF.1.md
|
||||||
playlist_gen.1.md
|
playlist_gen.1.md
|
||||||
|
play_tophoraire.1.md
|
||||||
|
random_music_player.1.md
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
playlist_gen.1
|
|
||||||
random_music_player.1
|
random_music_player.1
|
||||||
castopod_update.1
|
|
||||||
convertPDF.1
|
|
||||||
play_tophoraire.1
|
play_tophoraire.1
|
||||||
|
playlist_gen.1
|
||||||
|
convertPDF.1
|
||||||
|
castopod_update.1
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
|
config.json
|
||||||
definitionsTables.json
|
definitionsTables.json
|
||||||
lib
|
lib
|
||||||
config.json
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
UpdateManager.php
|
|
||||||
Config.php
|
Config.php
|
||||||
TableManager.php
|
|
||||||
Database.php
|
Database.php
|
||||||
|
TableManager.php
|
||||||
|
UpdateManager.php
|
||||||
|
|||||||
5
.theia/settings.json
Normal file
5
.theia/settings.json
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"[php]": {
|
||||||
|
"editor.defaultFormatter": "fterrag.vscode-php-cs-fixer"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,118 +0,0 @@
|
|||||||
alias=8.8.8.8,192.168.100.3
|
|
||||||
|
|
||||||
listen-address=127.0.0.1,192.168.100.1
|
|
||||||
# Never forward plain names (without a dot or domain part)
|
|
||||||
domain-needed
|
|
||||||
# Never forward addresses in the non-routed address spaces
|
|
||||||
bind-dynamic
|
|
||||||
bogus-priv
|
|
||||||
filterwin2k
|
|
||||||
#localise-queries
|
|
||||||
# Add local-only domains here, queries in these domains are answered
|
|
||||||
# from /etc/hosts or DHCP only.
|
|
||||||
local=/acegrp.lan/
|
|
||||||
domain=acegrp.lan
|
|
||||||
#expand-hosts
|
|
||||||
#no-negcache
|
|
||||||
#no-resolv
|
|
||||||
clear-on-reload
|
|
||||||
resolv-file=/tmp/resolv.conf.auto
|
|
||||||
|
|
||||||
#dhcp-authoritative
|
|
||||||
dhcp-leasefile=/tmp/dhcp.leases
|
|
||||||
|
|
||||||
#log-queries
|
|
||||||
#log-dhcp
|
|
||||||
|
|
||||||
# use /etc/ethers for static hosts; same format as --dhcp-host
|
|
||||||
#read-ethers
|
|
||||||
|
|
||||||
# activez le serveur DHCP:
|
|
||||||
# Plage DHCP
|
|
||||||
dhcp-range=192.168.100.2,192.168.100.251,1h
|
|
||||||
# Netmask
|
|
||||||
dhcp-option=1,255.255.255.0
|
|
||||||
# Route
|
|
||||||
dhcp-option=3,192.168.100.254
|
|
||||||
dhcp-option=option:dns-server,192.168.100.3
|
|
||||||
# Set the NIS domain name to "acegrp.lan"
|
|
||||||
dhcp-option=40,acegrp.lan
|
|
||||||
|
|
||||||
# Send an empty WPAD option. This may be REQUIRED to get windows 7 to behave.
|
|
||||||
dhcp-option=252,"\n"
|
|
||||||
# If a DHCP client claims that its name is "wpad", ignore that.
|
|
||||||
# This fixes a security hole. see CERT Vulnerability VU#598349
|
|
||||||
dhcp-name-match=set:wpad-ignore,wpad
|
|
||||||
dhcp-ignore-names=tag:wpad-ignore
|
|
||||||
|
|
||||||
|
|
||||||
#upstream
|
|
||||||
#server=1.1.1.1
|
|
||||||
server=9.9.9.10
|
|
||||||
|
|
||||||
# Catherine AlienWare
|
|
||||||
dhcp-host=00:0e:c6:fe:4d:97,,192.168.100.250,infinite
|
|
||||||
|
|
||||||
|
|
||||||
# Cedric Desktop
|
|
||||||
dhcp-host=74:d4:35:5b:42:0d,,192.168.100.155,infinite
|
|
||||||
|
|
||||||
# Luc Desktop - Carte mère
|
|
||||||
dhcp-host=00:22:4d:9d:47:03,,192.168.100.26,infinite
|
|
||||||
|
|
||||||
# Ethernet USB - Glaabit
|
|
||||||
dhcp-host=00:E0:4C:68:95:37,,192.168.100.28,infinite
|
|
||||||
# Ordinateur Portable
|
|
||||||
dhcp-host=80:fa:5b:49:c1:38,,192.168.100.27,infinite
|
|
||||||
|
|
||||||
# lexmark41
|
|
||||||
dhcp-host=00:21:b7:6d:ae:65,,192.168.100.146,infinite
|
|
||||||
|
|
||||||
# rpiampere
|
|
||||||
dhcp-host=b8:27:eb:7b:d0:83,,192.168.100.206,infinite
|
|
||||||
|
|
||||||
# Freebox
|
|
||||||
dhcp-host=34:27:92:85:cb:78,,192.168.100.82,infinite
|
|
||||||
|
|
||||||
# acenetwifi
|
|
||||||
dhcp-host=dc:a6:32:3d:6e:42,,192.168.100.163,infinite
|
|
||||||
|
|
||||||
# rpisalon
|
|
||||||
dhcp-host=b8:27:eb:94:a5:67,,192.168.100.25,infinite
|
|
||||||
|
|
||||||
# rpiluc - alias DNS
|
|
||||||
dhcp-host=dc:a6:32:33:f7:a7,,,192.168.100.59,infinite
|
|
||||||
cname=ampere.rpiluc001.acegrp.lan,rpiluc001.acegrp.lan
|
|
||||||
cname=api.ampere.rpiluc001.acegrp.lan,rpiluc001.acegrp.lan
|
|
||||||
cname=acegbd.rpiluc001.acegrp.lan,rpiluc001.acegrp.lan
|
|
||||||
cname=awsadmin.rpiluc001.acegrp.lan,rpiluc001.acegrp.lan
|
|
||||||
cname=bt.rpiluc001.acegrp.lan,rpiluc001.acegrp.lan
|
|
||||||
cname=dolibarr.rpiluc001.acegrp.lan,rpiluc001.acegrp.lan
|
|
||||||
cname=dolibarr-3.6.2.rpiluc001.acegrp.lan,rpiluc001.acegrp.lan
|
|
||||||
cname=erdsystem.rpiluc001.acegrp.lan,rpiluc001.acegrp.lan
|
|
||||||
cname=ged.rpiluc001.acegrp.lan,rpiluc001.acegrp.lan
|
|
||||||
cname=memoprix.rpiluc001.acegrp.lan,rpiluc001.acegrp.lan
|
|
||||||
cname=minecraft.rpiluc001.acegrp.lan,rpiluc001.acegrp.lan
|
|
||||||
cname=osseam.rpiluc001.acegrp.lan,rpiluc001.acegrp.lan
|
|
||||||
cname=speedtest.rpiluc001.acegrp.lan,rpiluc001.acegrp.lan
|
|
||||||
cname=pma.rpiluc001.acegrp.lan,rpiluc001.acegrp.lan
|
|
||||||
cname=planning.rpiluc001.acegrp.lan,rpiluc001.acegrp.lan
|
|
||||||
cname=zmhome.rpiluc001.acegrp.lan,rpiluc001.acegrp.lan
|
|
||||||
cname=zamba.acegrp.lan,rpinas.acegrp.lan
|
|
||||||
cname=wpad.acegrp.lan,rpiluc001.acegrp.lan
|
|
||||||
|
|
||||||
# dskosm001
|
|
||||||
#dhcp-host=,,192.168.100.61,infinite
|
|
||||||
#dhcp-host=,,192.168.100.62,infinite
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#dhcp-host=,,192.168.100.,infinite
|
|
||||||
|
|
||||||
# -- invité --
|
|
||||||
dhcp-host=d4:5d:64:67:3b:13,dskjojo001,192.168.100.159,infinite
|
|
||||||
dhcp-host=b0:5a:da:58:57:7b,catwin001,192.168.100.158,infinite
|
|
||||||
|
|
||||||
# Delays sending DHCPOFFER and proxydhcp replies for at least the specified number of seconds.
|
|
||||||
dhcp-mac=set:client_is_a_pi,B8:27:EB:*:*:*
|
|
||||||
dhcp-reply-delay=tag:client_is_a_pi,2
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
# Generated by resolvconf
|
|
||||||
nameserver 127.0.0.1
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
nameserver 9.9.9.9
|
|
||||||
0
local/bin/castopod_update.sh
Normal file → Executable file
0
local/bin/castopod_update.sh
Normal file → Executable file
50
local/bin/png2jpg.sh
Executable file
50
local/bin/png2jpg.sh
Executable file
@@ -0,0 +1,50 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Vérifier que ImageMagick est installé
|
||||||
|
if ! command -v convert &> /dev/null; then
|
||||||
|
echo "❌ Le programme 'convert' (ImageMagick) est requis mais non installé." >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Vérifier que la commande 'file' est dispo
|
||||||
|
if ! command -v file &> /dev/null; then
|
||||||
|
echo "❌ La commande 'file' est requise mais non installée." >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Vérifier qu'au moins un fichier est fourni
|
||||||
|
if [[ $# -eq 0 ]]; then
|
||||||
|
echo "Utilisation : $0 fichier1 [fichier2 ...]"
|
||||||
|
echo "Tu peux utiliser des jokers : $0 * img_??"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Boucler sur tous les fichiers passés en paramètre
|
||||||
|
for file in "$@"; do
|
||||||
|
# Vérifie que le fichier existe et est un fichier régulier
|
||||||
|
if [[ ! -f "$file" ]]; then
|
||||||
|
echo "❌ Fichier ignoré (inexistant ou non régulier) : $file"
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Vérifie le type MIME du fichier (doit être image/png)
|
||||||
|
mime_type=$(file --mime-type -b "$file")
|
||||||
|
if [[ "$mime_type" != "image/png" ]]; then
|
||||||
|
echo "⚠️ Ignoré (pas un PNG selon 'file') : $file"
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
dir=$(dirname "$file")
|
||||||
|
base=$(basename "$file")
|
||||||
|
name="${base%.*}"
|
||||||
|
dest="${dir}/${name}.jpg"
|
||||||
|
|
||||||
|
if [[ -e "$dest" ]]; then
|
||||||
|
echo "⏩ Le fichier existe déjà : $dest — conversion ignorée"
|
||||||
|
else
|
||||||
|
echo "✅ Conversion : $file → $dest"
|
||||||
|
convert "$file" "$dest"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "✅ Traitement terminé."
|
||||||
@@ -1,149 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# Vérifier si le script est exécuté en root
|
|
||||||
if [[ $EUID -ne 0 ]]; then
|
|
||||||
echo "Ce script doit être exécuté en tant que root."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
### Fonction pour mettre à jour le système
|
|
||||||
update_system() {
|
|
||||||
echo "Mise à jour du système..."
|
|
||||||
apt update && apt upgrade -y
|
|
||||||
}
|
|
||||||
|
|
||||||
### Fonction pour installer sudo s'il n'est pas déjà présent
|
|
||||||
install_sudo() {
|
|
||||||
if command -v sudo &>/dev/null; then
|
|
||||||
echo "Sudo est déjà installé."
|
|
||||||
else
|
|
||||||
echo "Installation de sudo..."
|
|
||||||
apt install -y sudo
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
### Fonction pour ajouter un utilisateur administrateur
|
|
||||||
add_admin_user() {
|
|
||||||
# Vérifier s'il existe déjà un utilisateur autre que root
|
|
||||||
EXISTING_USER=$(awk -F: '$3 >= 1000 && $3 < 60000 {print $1; exit}' /etc/passwd)
|
|
||||||
|
|
||||||
if [[ -n "$EXISTING_USER" ]]; then
|
|
||||||
echo "Un utilisateur ($EXISTING_USER) existe déjà sur le système."
|
|
||||||
read -p "Voulez-vous ajouter un autre utilisateur administrateur ? (o/N) " ADD_NEW_USER
|
|
||||||
if [[ ! "$ADD_NEW_USER" =~ ^[Oo]$ ]]; then
|
|
||||||
echo "Aucun nouvel utilisateur ajouté."
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
read -p "Entrez le nom du nouvel utilisateur : " NEW_USER
|
|
||||||
|
|
||||||
# Vérifier si l'utilisateur existe déjà
|
|
||||||
if id "$NEW_USER" &>/dev/null; then
|
|
||||||
echo "L'utilisateur $NEW_USER existe déjà."
|
|
||||||
else
|
|
||||||
adduser "$NEW_USER"
|
|
||||||
echo "Utilisateur $NEW_USER créé."
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Vérifier si l'utilisateur est dans le groupe sudo
|
|
||||||
if groups "$NEW_USER" | grep -q "\bsudo\b"; then
|
|
||||||
echo "$NEW_USER est déjà dans le groupe sudo."
|
|
||||||
else
|
|
||||||
usermod -aG sudo "$NEW_USER"
|
|
||||||
echo "$NEW_USER ajouté au groupe sudo."
|
|
||||||
fi
|
|
||||||
# Vérifier si les permissions sudo sont déjà définies
|
|
||||||
if [ -f "/etc/sudoers.d/$NEW_USER" ]; then
|
|
||||||
echo "Les permissions sudo sont déjà configurées pour $NEW_USER."
|
|
||||||
else
|
|
||||||
echo "$NEW_USER ALL=(ALL) NOPASSWD:ALL" > "/etc/sudoers.d/$NEW_USER"
|
|
||||||
chmod 0440 "/etc/sudoers.d/$NEW_USER"
|
|
||||||
echo "Configuration sudo appliquée pour $NEW_USER."
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Demander si on veut ajouter une clé SSH
|
|
||||||
read -p "Voulez-vous ajouter une clé SSH pour $NEW_USER ? (o/N) " ADD_SSH
|
|
||||||
if [[ "$ADD_SSH" =~ ^[Oo]$ ]]; then
|
|
||||||
SSH_DIR="/home/$NEW_USER/.ssh"
|
|
||||||
AUTH_KEYS="$SSH_DIR/authorized_keys"
|
|
||||||
|
|
||||||
# Créer le dossier .ssh s'il n'existe pas
|
|
||||||
if [ ! -d "$SSH_DIR" ]; then
|
|
||||||
mkdir -p "$SSH_DIR"
|
|
||||||
chown "$NEW_USER:$NEW_USER" "$SSH_DIR"
|
|
||||||
chmod 700 "$SSH_DIR"
|
|
||||||
echo "Dossier .ssh créé pour $NEW_USER."
|
|
||||||
fi
|
|
||||||
|
|
||||||
read -p "Collez la clé publique SSH : " SSH_KEY
|
|
||||||
|
|
||||||
# Vérifier si la clé est déjà présente
|
|
||||||
if grep -qxF "$SSH_KEY" "$AUTH_KEYS" 2>/dev/null; then
|
|
||||||
echo "Cette clé SSH est déjà ajoutée."
|
|
||||||
else
|
|
||||||
echo "$SSH_KEY" >> "$AUTH_KEYS"
|
|
||||||
chown "$NEW_USER:$NEW_USER" "$AUTH_KEYS"
|
|
||||||
chmod 600 "$AUTH_KEYS"
|
|
||||||
echo "Clé SSH ajoutée pour $NEW_USER."
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
echo "Aucune clé SSH ajoutée."
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
### Fonction pour configurer SSH de manière sécurisée
|
|
||||||
configure_ssh() {
|
|
||||||
if grep -q "^PermitRootLogin no" /etc/ssh/sshd_config; then
|
|
||||||
echo "La connexion root SSH est déjà désactivée."
|
|
||||||
else
|
|
||||||
echo "Désactivation de la connexion root via SSH..."
|
|
||||||
sed -i 's/^#PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config
|
|
||||||
sed -i 's/^PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config
|
|
||||||
systemctl restart ssh
|
|
||||||
echo "Sécurisation SSH appliquée."
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
### Fonction pour installer et configurer Fail2Ban
|
|
||||||
install_fail2ban() {
|
|
||||||
if dpkg -l | grep -q "^ii fail2ban"; then
|
|
||||||
echo "Fail2Ban est déjà installé."
|
|
||||||
else
|
|
||||||
echo "Installation de Fail2Ban..."
|
|
||||||
apt install -y fail2ban
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
### Fonction pour configurer les locales en français UTF-8
|
|
||||||
configure_locales() {
|
|
||||||
echo "Configuration des locales en français UTF-8..."
|
|
||||||
apt install -y locales
|
|
||||||
|
|
||||||
# Vérifier si fr_FR.UTF-8 est déjà activé
|
|
||||||
if locale -a | grep -q "fr_FR.utf8"; then
|
|
||||||
echo "Les locales en fr_FR.UTF-8 sont déjà activées."
|
|
||||||
else
|
|
||||||
sed -i 's/# fr_FR.UTF-8 UTF-8/fr_FR.UTF-8 UTF-8/' /etc/locale.gen
|
|
||||||
locale-gen
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Appliquer les variables locales si nécessaire
|
|
||||||
if grep -q "LANG=fr_FR.UTF-8" /etc/default/locale; then
|
|
||||||
echo "Les variables locales sont déjà configurées."
|
|
||||||
else
|
|
||||||
update-locale LANG=fr_FR.UTF-8 LANGUAGE=fr_FR.UTF-8 LC_ALL=fr_FR.UTF-8
|
|
||||||
echo "Variables locales mises à jour."
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
### SECTION PRINCIPALE : Activer/Désactiver les options ici
|
|
||||||
update_system
|
|
||||||
install_sudo
|
|
||||||
add_admin_user
|
|
||||||
configure_ssh
|
|
||||||
install_fail2ban
|
|
||||||
configure_locales
|
|
||||||
|
|
||||||
echo "Installation et configuration de base terminées."
|
|
||||||
echo "Vous pouvez maintenant vous connecter avec l'utilisateur : $NEW_USER"
|
|
||||||
42
local/bin/ssh-add-config.sh
Executable file
42
local/bin/ssh-add-config.sh
Executable file
@@ -0,0 +1,42 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
SSH_CONFIG="$HOME/.ssh/config"
|
||||||
|
|
||||||
|
read -p "Nom du Host (alias) : " HOST_NAME
|
||||||
|
read -p "Adresse du serveur (ex: user@host) : " USER_HOST
|
||||||
|
read -p "Port SSH (défaut 22) : " PORT
|
||||||
|
PORT=${PORT:-22}
|
||||||
|
|
||||||
|
# Vérifie si le Host existe déjà
|
||||||
|
if grep -q "Host $HOST_NAME" "$SSH_CONFIG"; then
|
||||||
|
echo "⚠️ Le Host '$HOST_NAME' existe déjà dans $SSH_CONFIG"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Test de connexion SSH
|
||||||
|
echo "🔌 Test de connexion SSH vers $USER_HOST sur le port $PORT..."
|
||||||
|
if ssh -o BatchMode=yes \
|
||||||
|
-o ConnectTimeout=5 \
|
||||||
|
-o StrictHostKeyChecking=accept-new \
|
||||||
|
-p "$PORT" "$USER_HOST" exit 2>/dev/null; then
|
||||||
|
echo "✅ Connexion réussie"
|
||||||
|
else
|
||||||
|
echo "❌ Échec de la connexion SSH. Vérifiez l'adresse ou l'accès."
|
||||||
|
exit 2
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Ajout dans le fichier ~/.ssh/config
|
||||||
|
echo "✍️ Ajout de la configuration dans $SSH_CONFIG"
|
||||||
|
mkdir -p "$HOME/.ssh"
|
||||||
|
touch "$SSH_CONFIG"
|
||||||
|
chmod 600 "$SSH_CONFIG"
|
||||||
|
|
||||||
|
cat <<EOF >> "$SSH_CONFIG"
|
||||||
|
|
||||||
|
Host $HOST_NAME
|
||||||
|
HostName $(echo "$USER_HOST" | cut -d'@' -f2)
|
||||||
|
User $(echo "$USER_HOST" | cut -d'@' -f1)
|
||||||
|
Port $PORT
|
||||||
|
EOF
|
||||||
|
|
||||||
|
echo "✅ Host '$HOST_NAME' ajouté à $SSH_CONFIG"
|
||||||
176
local/bin/trierPhotos.php
Executable file
176
local/bin/trierPhotos.php
Executable file
@@ -0,0 +1,176 @@
|
|||||||
|
#!/usr/bin/php
|
||||||
|
<?php
|
||||||
|
|
||||||
|
$log_directory = getenv('HOME') . '/logs';
|
||||||
|
|
||||||
|
// Vérification et création du répertoire de journalisation
|
||||||
|
if (!is_dir($log_directory)) {
|
||||||
|
mkdir($log_directory, 0777, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!is_writable($log_directory)) {
|
||||||
|
die("Impossible d'accéder au répertoire de journalisation : $log_directory\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
$timestamp = date('YmdHis');
|
||||||
|
$file_log = "$log_directory/trierPhotos_$timestamp.log";
|
||||||
|
$file_undo = "$log_directory/trierPhotos_$timestamp" . "_undo.log";
|
||||||
|
|
||||||
|
function logMessage($file, $message) {
|
||||||
|
file_put_contents($file, $message . "\n", FILE_APPEND);
|
||||||
|
echo $message . "\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Détermine le chemin de destination final selon les règles :
|
||||||
|
* - Si dest n’existe pas -> renvoie ce chemin (string).
|
||||||
|
* - S’il existe et SHA1 identique -> renvoie false (doublon déjà présent).
|
||||||
|
* - Sinon, tente filename_1.ext, filename_2.ext, ... :
|
||||||
|
* - si l’un existe et a le même SHA1 -> false (déjà présent sous variante).
|
||||||
|
* - sinon renvoie le premier nom libre.
|
||||||
|
*/
|
||||||
|
function computeDestinationPath(string $src, string $destDir, string $baseName): string|false {
|
||||||
|
$srcSha1 = @sha1_file($src);
|
||||||
|
if ($srcSha1 === false) return false;
|
||||||
|
|
||||||
|
$destPath = $destDir . '/' . $baseName;
|
||||||
|
if (!file_exists($destPath)) {
|
||||||
|
return $destPath;
|
||||||
|
}
|
||||||
|
|
||||||
|
$dstSha1 = @sha1_file($destPath);
|
||||||
|
if ($dstSha1 !== false && hash_equals($srcSha1, $dstSha1)) {
|
||||||
|
return false; // doublon exact déjà en place
|
||||||
|
}
|
||||||
|
|
||||||
|
$pi = pathinfo($baseName);
|
||||||
|
$name = $pi['filename'] ?? $baseName;
|
||||||
|
$ext = isset($pi['extension']) ? ('.' . $pi['extension']) : '';
|
||||||
|
|
||||||
|
for ($i = 1; $i <= 10000; $i++) {
|
||||||
|
$candidate = $destDir . '/' . $name . '_' . $i . $ext;
|
||||||
|
if (!file_exists($candidate)) {
|
||||||
|
return $candidate; // premier nom libre
|
||||||
|
}
|
||||||
|
// si existe, comparer le SHA1
|
||||||
|
$candSha1 = @sha1_file($candidate);
|
||||||
|
if ($candSha1 !== false && hash_equals($srcSha1, $candSha1)) {
|
||||||
|
return false; // déjà présent sous une variante
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false; // garde-fou
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Déplace un fichier (rename sinon copy+unlink) */
|
||||||
|
function moveFile(string $src, string $dst): bool {
|
||||||
|
// Essai direct
|
||||||
|
if (@rename($src, $dst)) return true;
|
||||||
|
// Fallback inter-filesystems
|
||||||
|
if (@copy($src, $dst)) {
|
||||||
|
if (@unlink($src)) return true;
|
||||||
|
// rollback si on n'arrive pas à supprimer la source
|
||||||
|
@unlink($dst);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
logMessage($file_log, "Début du script : " . date("c"));
|
||||||
|
logMessage($file_log, "Lieu d'exécution : " . getcwd());
|
||||||
|
|
||||||
|
if ($handle = opendir('.')) {
|
||||||
|
while (($entry = readdir($handle)) !== false) {
|
||||||
|
if ($entry === '.' || $entry === '..') continue;
|
||||||
|
if (!is_file($entry)) continue; // ignore dossiers et liens
|
||||||
|
|
||||||
|
$mime = @mime_content_type($entry) ?: '';
|
||||||
|
$mime_type = explode("/", $mime . '/');
|
||||||
|
logMessage($file_log, "\nFichier détecté : $entry");
|
||||||
|
logMessage($file_log, "MIME type : {$mime_type[0]}");
|
||||||
|
|
||||||
|
$traitement_ok = in_array($mime_type[0], ['image', 'video'], true);
|
||||||
|
$dateTimeOriginal = null;
|
||||||
|
|
||||||
|
// EXIF (JPEG uniquement)
|
||||||
|
if ($traitement_ok && $mime_type[0] === 'image' && ($mime_type[1] ?? '') === 'jpeg') {
|
||||||
|
$file_exif = @exif_read_data($entry, 'EXIF');
|
||||||
|
if (!empty($file_exif['DateTimeOriginal'])) {
|
||||||
|
$date_exif = explode(':', str_replace(' ', ':', $file_exif['DateTimeOriginal']));
|
||||||
|
if (count($date_exif) >= 3) {
|
||||||
|
$dateTimeOriginal = [
|
||||||
|
'y' => (int)$date_exif[0],
|
||||||
|
'm' => (int)$date_exif[1],
|
||||||
|
'd' => (int)$date_exif[2]
|
||||||
|
];
|
||||||
|
logMessage($file_log, "EXIF DateTimeOriginal : {$file_exif['DateTimeOriginal']}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Nom du fichier
|
||||||
|
if (!$dateTimeOriginal) {
|
||||||
|
if (preg_match('/^(IMG-|VID_|IMG_|VID-)(\d{4})(\d{2})(\d{2})/i', $entry, $m)) {
|
||||||
|
$dateTimeOriginal = ['y' => (int)$m[2], 'm' => (int)$m[3], 'd' => (int)$m[4]];
|
||||||
|
logMessage($file_log, "Date extraite du nom de fichier.");
|
||||||
|
} elseif (preg_match('/^Screenshot_(\d{4})(\d{2})(\d{2})/i', $entry, $m)) {
|
||||||
|
$dateTimeOriginal = ['y' => (int)$m[1], 'm' => (int)$m[2], 'd' => (int)$m[3]];
|
||||||
|
logMessage($file_log, "Date extraite du nom de fichier (Screenshot_...).");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Sanity check des dates
|
||||||
|
if ($dateTimeOriginal) {
|
||||||
|
if ($dateTimeOriginal['m'] < 1 || $dateTimeOriginal['m'] > 12 ||
|
||||||
|
$dateTimeOriginal['d'] < 1 || $dateTimeOriginal['d'] > 31 ||
|
||||||
|
$dateTimeOriginal['y'] < 1900 || $dateTimeOriginal['y'] > (int)date('Y')) {
|
||||||
|
$dateTimeOriginal = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// À défaut, mtime
|
||||||
|
if (!$dateTimeOriginal) {
|
||||||
|
$date_modif = explode(':', date('Y:m:d', @filemtime($entry) ?: time()));
|
||||||
|
$dateTimeOriginal = [
|
||||||
|
'y' => (int)$date_modif[0],
|
||||||
|
'm' => (int)$date_modif[1],
|
||||||
|
'd' => (int)$date_modif[2]
|
||||||
|
];
|
||||||
|
logMessage($file_log, "Date issue du mtime : {$date_modif[0]}-{$date_modif[1]}-{$date_modif[2]}");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Dossier + déplacement
|
||||||
|
if ($dateTimeOriginal) {
|
||||||
|
$rep_dest = sprintf('%04d/%02d/%02d', $dateTimeOriginal['y'], $dateTimeOriginal['m'], $dateTimeOriginal['d']);
|
||||||
|
if (!is_dir($rep_dest)) {
|
||||||
|
if (!mkdir($rep_dest, 0777, true) && !is_dir($rep_dest)) {
|
||||||
|
logMessage($file_log, "[ERREUR] Impossible de créer le dossier : $rep_dest");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
logMessage($file_log, "Dossier créé : $rep_dest");
|
||||||
|
}
|
||||||
|
|
||||||
|
$finalPath = computeDestinationPath($entry, $rep_dest, basename($entry));
|
||||||
|
if ($finalPath === false) {
|
||||||
|
// Un doublon identique existe déjà quelque part dans $rep_dest
|
||||||
|
if (@unlink($entry)) {
|
||||||
|
logMessage($file_log, "[INFO] Doublon exact détecté -> source supprimée : $entry");
|
||||||
|
// Undo = rien à faire (le fichier existe déjà en dest)
|
||||||
|
} else {
|
||||||
|
logMessage($file_log, "[ERREUR] Impossible de supprimer la source doublon : $entry");
|
||||||
|
}
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Déplacer (rename, sinon copy+unlink)
|
||||||
|
if (moveFile($entry, $finalPath)) {
|
||||||
|
logMessage($file_log, "[OK] Déplacé : $entry → $finalPath");
|
||||||
|
file_put_contents($file_undo, "mv \"$finalPath\" \"$entry\"\n", FILE_APPEND);
|
||||||
|
} else {
|
||||||
|
logMessage($file_log, "[ERREUR] Échec du déplacement : $entry → $finalPath");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
closedir($handle);
|
||||||
|
}
|
||||||
|
|
||||||
|
logMessage($file_log, "Fin du script : " . date("c"));
|
||||||
|
|
||||||
0
local/bin/update_bullseye2buster.sh
Normal file → Executable file
0
local/bin/update_bullseye2buster.sh
Normal file → Executable file
@@ -1,5 +1,10 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Initialiser les tableaux
|
||||||
|
ignored_machines=()
|
||||||
|
ok_machines=()
|
||||||
|
error_machines=()
|
||||||
|
|
||||||
# Variables pour les codes de couleur ANSI
|
# Variables pour les codes de couleur ANSI
|
||||||
RED='\033[0;31m'
|
RED='\033[0;31m'
|
||||||
GREEN='\033[0;32m'
|
GREEN='\033[0;32m'
|
||||||
@@ -7,22 +12,161 @@ NC='\033[0m' # No Color
|
|||||||
|
|
||||||
# Mise à jour des machines présentes dans .ssh/config avec choix d'ignorer certaines.
|
# Mise à jour des machines présentes dans .ssh/config avec choix d'ignorer certaines.
|
||||||
|
|
||||||
# Fonction pour mettre à jour avec apt
|
# fonction run_ssh et run_scp avec timeout + options
|
||||||
update_with_apt() {
|
SSH_OPTS="-o ConnectTimeout=5 -o BatchMode=yes -o StrictHostKeyChecking=accept-new"
|
||||||
echo -e " - Mise à jour avec apt sur $1 \n"
|
SSH_TIMEOUT="5"
|
||||||
ssh -tt "$1" '
|
|
||||||
sudo apt -y -q clean &&
|
run_ssh() {
|
||||||
sudo apt -y -q update &&
|
local machine="$1"
|
||||||
sudo apt -y -q full-upgrade &&
|
local start_time=$(date +%s)
|
||||||
sudo apt -y -q autoremove
|
shift
|
||||||
'
|
|
||||||
echo -e "\n"
|
if [ $# -eq 0 ]; then
|
||||||
|
ssh "$machine" 'bash -s' < /dev/stdin
|
||||||
|
else
|
||||||
|
ssh "$machine" "$@"
|
||||||
|
fi
|
||||||
|
|
||||||
|
local end_time=$(date +%s)
|
||||||
|
local duration=$(( end_time - start_time ))
|
||||||
|
echo -e " ⏱️ Durée : ${duration}s"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
extract_stats_block() {
|
||||||
|
local label="$1"
|
||||||
|
grep -A2 "^>>> $label" "$logfile" | grep -E '^[0-9]+ mis à jour' | tail -n1
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
parse_summary_line() {
|
||||||
|
awk '
|
||||||
|
{
|
||||||
|
updated += $1
|
||||||
|
installed += $4
|
||||||
|
removed += $7
|
||||||
|
last_notup = $11
|
||||||
|
}
|
||||||
|
END {
|
||||||
|
print updated, installed, removed, (last_notup ? last_notup : 0)
|
||||||
|
}'
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
run_scp() {
|
||||||
|
local src="$1"
|
||||||
|
local dest="$2"
|
||||||
|
local machine="$3"
|
||||||
|
timeout "$SSH_TIMEOUT" scp $SSH_OPTS "$src" "$machine:$dest"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
update_with_apt() {
|
||||||
|
local machine="$1"
|
||||||
|
local uniqkey="$2"
|
||||||
|
|
||||||
|
local start_time=$(date +%s)
|
||||||
|
|
||||||
|
echo -e " - Mise à jour avec apt-get sur $machine \n"
|
||||||
|
|
||||||
|
stats_tmp=$(mktemp)
|
||||||
|
|
||||||
|
run_ssh "$machine" <<'EOF' | tee "$stats_tmp"
|
||||||
|
export DEBIAN_FRONTEND=noninteractive
|
||||||
|
|
||||||
|
echo ">>> clean"
|
||||||
|
sudo apt-get -y clean
|
||||||
|
|
||||||
|
echo ">>> update"
|
||||||
|
sudo apt-get update
|
||||||
|
|
||||||
|
echo ">>> check-upgrade"
|
||||||
|
UPGRADABLE=$(apt-get -s upgrade | grep "^Inst" | wc -l)
|
||||||
|
|
||||||
|
if [ "${UPGRADABLE:-0}" -gt 0 ] 2>/dev/null; then
|
||||||
|
echo ">>> upgrade"
|
||||||
|
sudo apt-get -y upgrade
|
||||||
|
|
||||||
|
echo ">>> full-upgrade"
|
||||||
|
sudo apt-get -y full-upgrade
|
||||||
|
|
||||||
|
echo ">>> autoremove"
|
||||||
|
sudo apt-get -y autoremove
|
||||||
|
else
|
||||||
|
echo ">>> Aucun paquet à mettre à jour"
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
if [ -f /var/run/reboot-required ]; then
|
||||||
|
echo ">>> REDÉMARRAGE NÉCESSAIRE"
|
||||||
|
fi
|
||||||
|
EOF
|
||||||
|
|
||||||
|
|
||||||
|
local end_time=$(date +%s)
|
||||||
|
local duration=$(( end_time - start_time ))
|
||||||
|
|
||||||
|
log_capture=$(cat "$stats_tmp")
|
||||||
|
|
||||||
|
local ssh_status=$?
|
||||||
|
|
||||||
|
if [ "$ssh_status" -ne 0 ]; then
|
||||||
|
echo -e "❌ Échec SSH ou erreur distante sur $machine (code $ssh_status)"
|
||||||
|
else
|
||||||
|
echo -e "✅ $machine : Terminé avec succès"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo
|
||||||
|
|
||||||
|
# Récupération stats à partir des logs visibles en live
|
||||||
|
# On extrait les chiffres comme dans le message de apt
|
||||||
|
# Initialisation des compteurs
|
||||||
|
updated=0
|
||||||
|
installed=0
|
||||||
|
removed=0
|
||||||
|
unchanged=0
|
||||||
|
|
||||||
|
# Extraire les lignes après chaque bloc
|
||||||
|
line_upgrade=$(echo "$log_capture" | grep -A2 '^>>> upgrade' | grep -E '^[0-9]+ mis à jour' | tail -n1)
|
||||||
|
line_fullup=$(echo "$log_capture" | grep -A2 '^>>> full-upgrade' | grep -E '^[0-9]+ mis à jour' | tail -n1)
|
||||||
|
line_autorm=$(echo "$log_capture" | grep -A2 '^>>> autoremove' | grep -E '^[0-9]+ mis à jour' | tail -n1)
|
||||||
|
|
||||||
|
# Ajouter les lignes ensemble
|
||||||
|
line_all="$line_upgrade"$'\n'"$line_fullup"$'\n'"$line_autorm"
|
||||||
|
|
||||||
|
read updated installed removed unchanged <<< $(echo "$line_all" | parse_summary_line)
|
||||||
|
|
||||||
|
# Date/heure actuelle
|
||||||
|
now=$(date '+%Y-%m-%d %H:%M:%S')
|
||||||
|
|
||||||
|
# Fichier de stats
|
||||||
|
stats_file="$HOME/.config/updateall-stats"
|
||||||
|
mkdir -p "$(dirname "$stats_file")"
|
||||||
|
|
||||||
|
# Ajouter l’en-tête si le fichier est vide
|
||||||
|
if [ ! -s "$stats_file" ]; then
|
||||||
|
echo "machine,date,duree,updated,installed,removed,unchanged,uniqkey" > "$stats_file"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Ajout ligne CSV
|
||||||
|
echo "$machine,$now,$duration,$updated,$installed,$removed,$unchanged,$uniqkey" >> "$stats_file"
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Fonction pour mettre à jour avec dnf
|
# Fonction pour mettre à jour avec dnf
|
||||||
update_with_dnf() {
|
update_with_dnf() {
|
||||||
echo -e " - Mise à jour avec dnf sur $1 \n"
|
echo -e " - Mise à jour avec dnf sur $1 \n"
|
||||||
ssh -tt "$1" 'sudo dnf check-update && sudo dnf upgrade -y'
|
run_ssh "$1" 'sudo dnf check-update && sudo dnf upgrade -y'
|
||||||
echo -e "\n"
|
echo -e "\n"
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -100,7 +244,7 @@ update_machine () {
|
|||||||
|
|
||||||
if timeout 5 ssh "$machine" which apt > /dev/null 2>&1; then
|
if timeout 5 ssh "$machine" which apt > /dev/null 2>&1; then
|
||||||
echo -e "${GREEN}apt${NC}"
|
echo -e "${GREEN}apt${NC}"
|
||||||
update_with_apt "$machine"
|
update_with_apt "$machine" "$uniqkey"
|
||||||
elif timeout 5 ssh "$machine" which dnf > /dev/null 2>&1; then
|
elif timeout 5 ssh "$machine" which dnf > /dev/null 2>&1; then
|
||||||
echo -e "${GREEN}dnf${NC}"
|
echo -e "${GREEN}dnf${NC}"
|
||||||
update_with_dnf "$machine"
|
update_with_dnf "$machine"
|
||||||
@@ -139,6 +283,34 @@ check_host() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
run_custom_script() {
|
||||||
|
local machine="$1"
|
||||||
|
local custom_script="$HOME/.config/updateall.d/$machine"
|
||||||
|
|
||||||
|
if [ -f "$custom_script" ]; then
|
||||||
|
echo -e " - Exécution du script spécifique pour ${GREEN}$machine${NC}"
|
||||||
|
# Copier le script sur la machine et l'exécuter
|
||||||
|
run_scp "$custom_script" "/tmp/updateall_custom.sh" "$machine"
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
echo " - Script copié, exécution en cours..."
|
||||||
|
run_ssh "$machine" '
|
||||||
|
chmod +x /tmp/updateall_custom.sh
|
||||||
|
sudo /tmp/updateall_custom.sh
|
||||||
|
status=$?
|
||||||
|
sudo rm -f /tmp/updateall_custom.sh
|
||||||
|
exit $status
|
||||||
|
'
|
||||||
|
else
|
||||||
|
echo -e "${RED} - Échec du transfert du script personnalisé${NC}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
else
|
||||||
|
echo " - Aucun script spécifique pour $machine."
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# Générer une clé unique
|
# Générer une clé unique
|
||||||
uniqkey=$(uuidgen)
|
uniqkey=$(uuidgen)
|
||||||
echo "Clé d'installation : $uniqkey"
|
echo "Clé d'installation : $uniqkey"
|
||||||
@@ -146,15 +318,27 @@ echo "Clé d'installation : $uniqkey"
|
|||||||
# Récupérer les alias SSH
|
# Récupérer les alias SSH
|
||||||
machines=($(get_ssh_aliases))
|
machines=($(get_ssh_aliases))
|
||||||
|
|
||||||
|
|
||||||
|
echo -e "\n--- Démarrage du traitement ---\n"
|
||||||
|
|
||||||
# Parcourir la liste des machines
|
# Parcourir la liste des machines
|
||||||
|
|
||||||
for machine in "${machines[@]}"; do
|
total=${#machines[@]}
|
||||||
# Vérification si le nom de machine est présent dans le fichier .config/updateall-hosts
|
current=0
|
||||||
echo -e "\n"
|
|
||||||
echo -n " >> $machine "
|
|
||||||
|
|
||||||
if grep -q "^$machine " ~/.config/updateall-hosts; then
|
for machine in "${machines[@]}"; do
|
||||||
status=$(grep "^$machine " ~/.config/updateall-hosts | awk '{print $2}')
|
|
||||||
|
# Vérification si le nom de machine est présent dans le fichier .config/updateall-hosts
|
||||||
|
|
||||||
|
echo -e "\n"
|
||||||
|
((current++))
|
||||||
|
echo -ne ">> $machine ($current/$total)\n"
|
||||||
|
|
||||||
|
while read host status; do
|
||||||
|
# ignorer commentaires et lignes vides
|
||||||
|
[[ -z "$host" || "$host" =~ ^# ]] && continue
|
||||||
|
|
||||||
|
if [ "$machine" = "$host" ]; then
|
||||||
if [ "$status" = "1" ]; then
|
if [ "$status" = "1" ]; then
|
||||||
echo -e "${GREEN}connue${NC}"
|
echo -e "${GREEN}connue${NC}"
|
||||||
|
|
||||||
@@ -164,26 +348,68 @@ for machine in "${machines[@]}"; do
|
|||||||
if [ "$machine_online" -eq 1 ]; then
|
if [ "$machine_online" -eq 1 ]; then
|
||||||
check_keyinstall "$machine" "$uniqkey"
|
check_keyinstall "$machine" "$uniqkey"
|
||||||
keyinstall_present="$?"
|
keyinstall_present="$?"
|
||||||
|
|
||||||
if [ "$keyinstall_present" -eq 0 ]; then
|
if [ "$keyinstall_present" -eq 0 ]; then
|
||||||
update_machine "$machine"
|
update_machine "$machine"
|
||||||
create_installkey "$machine" "$uniqkey"
|
create_installkey "$machine" "$uniqkey"
|
||||||
|
ok_machines+=("$machine")
|
||||||
fi
|
fi
|
||||||
|
else
|
||||||
|
error_machines+=("$machine")
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
echo -e "${RED}ignorée${NC}"
|
echo -e "${RED}ignorée${NC}"
|
||||||
|
ignored_machines+=("$machine")
|
||||||
fi
|
fi
|
||||||
else
|
matched=1
|
||||||
if [ "$machine_online" -eq 1 ]; then
|
break
|
||||||
echo -e "${RED}vue pour la 1re fois${NC}"
|
|
||||||
|
|
||||||
check_host "$machine"
|
|
||||||
machine_online="$?"
|
|
||||||
|
|
||||||
confirm_update "$machine"
|
|
||||||
update_machine "$machine"
|
|
||||||
create_installkey "$machine" "$uniqkey"
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
|
done < ~/.config/updateall-hosts
|
||||||
|
|
||||||
|
if [ "$matched" != "1" ]; then
|
||||||
|
check_host "$machine"
|
||||||
|
machine_online="$?"
|
||||||
|
|
||||||
|
if [ "$machine_online" -eq 1 ]; then
|
||||||
|
echo -e "${RED}vue pour la 1re fois${NC}"
|
||||||
|
confirm_update "$machine"
|
||||||
|
update_machine "$machine"
|
||||||
|
run_custom_script "$machine"
|
||||||
|
create_installkey "$machine" "$uniqkey"
|
||||||
|
ok_machines+=("$machine")
|
||||||
|
else
|
||||||
|
echo -e "${RED}non accessible${NC}"
|
||||||
|
error_machines+=("$machine")
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
done
|
done
|
||||||
|
|
||||||
|
echo -e "\n--- Résumé des machines ---\n"
|
||||||
|
|
||||||
|
# Afficher les machines ignorées
|
||||||
|
echo -e "${RED}Machines ignorées :${NC}"
|
||||||
|
for machine in "${ignored_machines[@]}"; do
|
||||||
|
echo " - $machine"
|
||||||
|
done
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# Afficher les machines en erreur
|
||||||
|
echo -e "${RED}Machines en erreur :${NC}"
|
||||||
|
for machine in "${error_machines[@]}"; do
|
||||||
|
echo " - $machine"
|
||||||
|
done
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# Afficher les machines ok
|
||||||
|
echo -e "${GREEN}Machines mises à jour avec succès :${NC}"
|
||||||
|
for machine in "${ok_machines[@]}"; do
|
||||||
|
echo " - $machine"
|
||||||
|
done
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user