Pour le même besoin, voici ma version du script :
#!/bin/sh
resultCurl=$( mktemp )
curl -S -d "login=freebox&passwd=XXXXXX" http://mafreebox.freebox.fr/login.php -v > $resultCurl 2>&1
if grep -q "Set-Cookie:" $resultCurl; then
echo "Login to Freebox succeeded!"
else
echo "Login to Freebox failed!"
rm $resultCurl > /dev/null 2>&1
exit 1
fi
csrfToken=`grep "X-FBX-CSRF-Token" $resultCurl | cut -f 3 -d ' ' | sed "s/r//" `
fbxSid=`grep "FBXSID" $resultCurl | cut -f 3 -d ' ' | sed "s/FBXSID=//" | sed "s/;//" | sed "s/r//" `
curl -s -b FBXSID=$fbxSid -D - -o /dev/null -e http://mafreebox.freebox.fr/settings.php?page=wifi_conf http://mafreebox.freebox.fr/wifi.cgi --data-urlencode csrf_token=$csrfToken -d "channel=11&ht_mode=disabled&method=wifi.ap_params_set&config=Valider" -H "X-Requested-With: XMLHttpRequest" -H "Accept: application/json, text/javascript, */*" > $resultCurl 2>&1
if grep -q "HTTP/1.1 200 OK" $resultCurl; then
echo "Setting Freebox wifi OFF succeeded!"
else
echo "Setting Freebox wifi OFF failed!"
fi
rm $resultCurl > /dev/null 2>&1
echo "Logout to Freebox succeeded!"
exit 0
En lançant avec dash, on voit que les valeurs sont passées correctement. Mais je confirme, ça marche à la main mais pas via le script.
Si j'ajoute des ` les valeurs sont vides. Bref, on sait que ça vient des valeurs de fbxSid et csrfToken mais on est bloqués :/
Merci pour votre aide.