60 lines
1.6 KiB
Bash
Executable File
60 lines
1.6 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
#Charger les variables du fichier .env
|
|
if [ -f .env ]; then
|
|
export $(grep -v '^#' .env | xargs)
|
|
fi
|
|
|
|
#Prompt de 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
|
|
echo "Vous avez entré ${confirmation}"
|
|
|
|
#Si o est entré, réveil des machines et lancement de la tâche
|
|
if [ "$confirmation" == "o" ]; then
|
|
|
|
echo "Lancement de la tâche de réinitialisation de la salle"
|
|
|
|
|
|
#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
|
|
#Broadcast Global
|
|
#echo "💡 Envoi WOL à $MAC via 255.255.255.255"
|
|
wakeonlan -i 255.255.255.255 "$MAC"
|
|
|
|
#Broadcast Local
|
|
#echo "💡 Envoi WOL à $MAC via 192.168.106.255"
|
|
wakeonlan -i "$LOCAL_BROADCAST_IP" "$MAC"
|
|
done
|
|
|
|
|
|
|
|
# Construction du JSON avec les paramètres de tâche à envoyer à l'API
|
|
DATA=$(cat <<EOF
|
|
{
|
|
"taskTypeID": "$TASK_TYPE",
|
|
"shutdown": "$SHUTDOWN",
|
|
"imageID": "$IMAGE_ID"
|
|
}
|
|
EOF
|
|
)
|
|
|
|
#Création de la tâche via l'API de FOG
|
|
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
|
|
echo "Annulation de la tâche de réinitialisation de la salle"
|
|
fi
|
|
|
|
echo "FIN"
|
|
|