Modification de la méthode de Wake On LAN et amélioration du script

This commit is contained in:
nelson 2025-06-02 15:24:47 +02:00
parent 79af06ff9d
commit 44979f22c8

View File

@ -1,45 +1,39 @@
#!/bin/bash #!/bin/bash
#Charger les variables du fichier .env
# Charger les variables du .env
if [ -f .env ]; then if [ -f .env ]; then
export $(grep -v '^#' .env | xargs) export $(grep -v '^#' .env | xargs)
fi fi
#================================================================================ #Confirmation de l'utilisateur
read -e -p "⚠️ Attention vous allez réinitialiser complètement la salle, voulez-vous vraiment continuer [o/n] : " -i "n" confirmation
#Question posée à l'utilisateur pour la confirmation d'execution du script
#La commande pouvant être assez assez intrusive, il est préférable de mettre non par défaut
read -e -p "Attention vous allez réinitialiser complétement la salle, voullez vous vraiment continuer [o/n] : " -i "n" confirmation
echo "Vous avez entré ${confirmation}" echo "Vous avez entré ${confirmation}"
if [ "$confirmation" == "o" ]; then
#Si l'utilisateur entre oui, le script s'exécute
if [ $confirmation == 'o' ];
then
echo "Lancement de la tâche de réinitialisation de la salle" echo "Lancement de la tâche de réinitialisation de la salle"
#Configuration
#curl -H "fog-api-token: ${FOG_API_TOKEN}" -H "fog-user-token: ${FOG_USER_TOKEN}" -H "Content-Type: application/json" -X GET http://localhost/fog/group | jq
#Variables de configuration de la tâche
GROUP_ID="1" GROUP_ID="1"
IMAGE_ID="1" IMAGE_ID="1"
TASK_TYPE="1" #Déploiement multicast TASK_TYPE="1" # Multicast
SHUTDOWN="1" #Eteindre les machines à la fin SHUTDOWN="1" # Éteindre à la fin
#Récupération des MAC des PCs
MACS=$(curl -s -H "fog-api-token: $FOG_API_TOKEN" -H "fog-user-token: $FOG_USER_TOKEN" \
http://localhost/fog/host | jq -r '.hosts[].macs[]')
#Envoi du WOL à chaque MAC
echo "Révéil des machines"
for MAC in $MACS; do
#echo "💡 Envoi WOL à $MAC"
wakeonlan "$MAC"
done
#Wake On LAN sur le groupe
echo "Envoi du Wake On LAN vers le groupe ${GROUP_ID}"
curl -H "fog-api-token: ${FOG_API_TOKEN}" -H "fog-user-token: ${FOG_USER_TOKEN}" -X POST http://localhost/fog/group/${GROUP_ID}/wol
# Construction du JSON de tâche
#Construction du JSON avec les paramètres de la tâche DATA=$(cat <<EOF
DATA=$(cat <<EOF
{ {
"taskTypeID": "$TASK_TYPE", "taskTypeID": "$TASK_TYPE",
"shutdown": "$SHUTDOWN", "shutdown": "$SHUTDOWN",
@ -48,14 +42,17 @@ DATA=$(cat <<EOF
EOF EOF
) )
#Envoi de la requête de déploiement à l'api de fog # Création de la tâche
curl -H "fog-api-token: ${FOG_API_TOKEN}" -H "fog-user-token: ${FOG_USER_TOKEN}" -H "Content-Type: application/json" -X POST http://localhost/fog/group/${GROUP_ID}/task -d "$DATA" echo "Création de la tâche pour le groupe ${GROUP_ID}"
curl -s -H "fog-api-token: ${FOG_API_TOKEN}" -H "fog-user-token: ${FOG_USER_TOKEN}" \
-H "Content-Type: application/json" \
-X POST http://localhost/fog/group/${GROUP_ID}/task -d "$DATA"
#Sinon on ne fait rien
else else
echo "Annulation de la tâche de réinitialisation de la salle" echo "Annulation de la tâche de réinitialisation de la salle"
fi fi
echo "FIN" echo "FIN"