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[]')
#Wake On LAN sur le groupe #Envoi du WOL à chaque MAC
echo "Envoi du Wake On LAN vers le groupe ${GROUP_ID}" echo "Révéil des machines"
curl -H "fog-api-token: ${FOG_API_TOKEN}" -H "fog-user-token: ${FOG_USER_TOKEN}" -X POST http://localhost/fog/group/${GROUP_ID}/wol for MAC in $MACS; do
#echo "💡 Envoi WOL à $MAC"
wakeonlan "$MAC"
done
#Construction du JSON avec les paramètres de la tâche # Construction du JSON de 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"