#51 Le 31/05/2013, à 13:45
- Draift
Re : [RESOLU]Automatiser connexion FreeWifi
Le script de pfff est toujours fonctionnel aujourd'hui. (Je le précise car google m'a mené ici et au doute au vu de l'ancienneté des messages.) Merci pfff ! Ton script fonctionne parfaitement ! (mais ton site perso ne veut pas mon commentaire)
Et à la suite d'Omnisilver je chicane à mon tour :
Le script comporte une erreur répété deux fois "Erreur de connection FreeWifi". Oui, orthographiques, "connexion" et pas "connection".
C'est tout.
Salutations
Dernière modification par Draift (Le 31/05/2013, à 13:48)
Hors ligne
#52 Le 02/06/2013, à 09:41
- Zakhar
Re : [RESOLU]Automatiser connexion FreeWifi
Précisions : le script fonctionne quand ton PC est branché uniquement en Wifi.
S'il est branché à la fois en filaire et en wifi, la route par défaut va favoriser le filaire. Du coup le wget part sur l'ethernet et ça n'active pas ta Wifi. Cela dit ce n'est pas trop grave, parce que de toute façon, dans ce cas là la Wifi n'est pas utilisée.
"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)
Hors ligne
#53 Le 22/09/2013, à 17:06
- maximac
Re : [RESOLU]Automatiser connexion FreeWifi
Bon, je rencontre des problèmes avec freewifi, je pense pas que ça soit causé par le script donné par pfff, mais comme je l'utilise, je me dis qu'y a peut-être moyen d'en faire quelque chose.
En fait, je suis régulièrement déconnecté. Enfin, je reste connecté au réseau wifi d'après network manager, il m'indique même une réception plutôt bonne, seulement, aucune donnée ne transite sur le réseau.
Je ne pense pas que ça vienne d'une mauvaise réception, ça intervient peut-importe l'endroit où je me trouve.
Des fois ça n'arrive pas, des fois ça arrive toutes les dix minutes, et des fois je ne peux pas rester connecté plus de 5 secondes.
Et ce qui montre bien que ce n'est pas un problème de réception : Il suffit que je me déconnecte et reconnecte au réseau, et pouf ! miracle, ça remarche
Quelqu'un a une idée sur un paramètre qui pourrait entrer en jeu ?
Au pire du pire, y'aurait pas moyen d'inclure dans le script une partie avec un ping régulier vers un site web, de manière à ce que ça lance la déconnexion/reconnexion tout seul ?
Hors ligne
#54 Le 02/12/2013, à 23:35
- dqv69
Re : [RESOLU]Automatiser connexion FreeWifi
Bonjour à tous,
tout d'abord merci pour tous vos scripts.
Je suis en train d'essayer de mixer ces scripts avec dispatch un outils permettant de multiplexer les connexions.
Le but étant d'utiliser ma connexion perso et de la multiplexer avec une connexion freewifi.
J'ai donc 2 interfaces sur mon serveur eth0 (connexion perso) et wlan0 sur freeWifi.
Je ne parviens pas à m'authentifier sur la page freewifi à l'aide de wget.
J'ai essayer de "binder" wget sur l'interface wlan0, mais sans succès.
Est-ce que qqun aurais une petite idée ?
Merci à tous.
Hors ligne
#55 Le 28/11/2015, à 11:24
- liberio
Re : [RESOLU]Automatiser connexion FreeWifi
Bonjour,
Pour ceux que ça intéresse, voici mon script actuel, adapté de celui de redvivi :
#!/bin/sh
#Utilisation: sudo ./freewifi.sh
#Source: http://forum.ubuntu-fr.org/viewtopic.php?id=325891&p=2
LOGIN=mon_login
PASSWORD=mon_mot_de_passe
URL_FREE='https://wifi.free.fr'
URL_FREE_AUTH='https://wifi.free.fr/Auth'
URL_GOOGLE='www.google.com'
CONNEXION_FREE='CONNEXION AU SERVICE'
DEJA_CONNECTE_FREE="Site accessible uniquement à partir d'une Freebox"
PAS_CONNECTE_FREE='Login manquant'
CONNEXION_REUSSIE_FREE='CONNEXION AU SERVICE REUSSIE'
CHECK_INTERVAL=10
#
# Fonction qui nous connecte au FreeWifi
#
do_start()
{
# Retourne
# 0 si le Wifi a ete demarre
# 1 si le Wifi n'a pas pu etre demarre
# Autre si une erreur survient
while true; do
echo "Activation de l'interface wlan0..."
rfkill unblock wifi
sleep 5
ifconfig wlan0 up
echo "Association de l'interface wlan0 avec le reseau FreeWifi..."
iwconfig wlan0 essid FreeWifi
[ ! -f /sbin/iwconfig -o ! -x /sbin/iwconfig ] && return 1
[ $(iwconfig 2>&1 | grep -i 'freewifi' | wc -l) -eq 0 ] && echo "Wlan0 n'est pas associee a FreeWifi." && return 1
echo "L'interface wlan0 est associee au reseau FreeWifi."
echo "Obtention d'une adresse IP par DHCP..."
dhclient wlan0
if [ $(ifconfig wlan0 | grep -i 'inet' | wc -l) -eq 0 ]; then
echo "Aucune IP n'est disponible pour l'instant."
else
echo "Une IP vient de nous etre affectee : $(ifconfig wlan0 | sed -n 's/.*inet \([^.]*.[^.]*.[^.]*.[^ ]*\).*$/\1/p')"
#while true; do
TEST_PAGE=$(wget -SO- -T 1 -t 1 ${URL_FREE} 2>&1)
sleep 3
IS_FREE=$(echo "${TEST_PAGE}" | grep -i "${CONNEXION_FREE}" | grep -i "FreeWifi")
if [ "X$IS_FREE" != "X" ]; then
do_connect
if [ $? -eq 0 ]; then
return 0
fi
else
echo "Nous n'avons pas trouve la chaine '${CONNEXION_FREE}' dans la page ${URL_FREE}."
echo "Voici le contenu de la page de connexion : ${TEST_PAGE}".
fi
#done
fi
echo "Nous allons re-essayer dans ${CHECK_INTERVAL} secondes."
sleep ${CHECK_INTERVAL}
done
}
#
# Fonction qui arrete le Wifi
#
do_stop()
{
# Retourne
# 0 si le Wifi a ete arretee
# 1 si le Wifi n'a pas pu etre arretee
# 2 si une autre erreur survient
echo "Arret de la connexion Wifi..."
ifconfig wlan0 down
rfkill block wifi
sleep 5
if [ $? -eq 0 ]; then
echo "La connexion Wifi a ete arretee."
return 0
elif [ $? -eq 1 ]; then
echo "La connexion Wifi n'a pas pu etre arretee."
return 1
else
return 3
fi
}
#
# Fonction qui teste la connection Wifi
#
do_status()
{
# Retourne
# 0 si nous sommes deja connecte a FreeWifi
# 1 si nous sommes deja connecte mais pas en FreeWifi, ou si ping n'a pas recu assez de paquets en réponse
# 2 si nous ne sommes pas connecte en Wifi
# 3 si une autre erreur survient
TEST_PAGE=$(wget -SO- -T 1 -t 1 ${URL_FREE_AUTH} 2>&1)
IS_FREE=$(echo "${TEST_PAGE}" | grep -i "${DEJA_CONNECTE_FREE}")
ping -q -c2 ${URL_GOOGLE} 2>&1
if [ $? -eq 0 ]; then
if [ "X${IS_FREE}" != "X" ]; then
echo "Nous sommes deja connecte a FreeWifi."
return 0
elif [ "X$(echo "${TEST_PAGE}" | grep -i "${PAS_CONNECTE_FREE}")" != "X" ] && [ $(ifconfig wlan0 | grep -i 'inet adr' | wc -l) -ne 0 ] && [ "$(wget -q -T 1 -t 1 ${URL_FREE})" ]; then
echo "Nous sommes deja connecte, mais pas en FreeWifi."
return 1
else
echo "Un de nos tests de connexion a echoue."
return 3
fi
elif [ $? -eq 1 ]; then
echo "Ping n'a pas recu assez de paquets en reponse."
return 1
elif [ $(ifconfig wlan0 | grep -i 'inet adr' | wc -l) -eq 0 ]; then
echo "Nous ne sommes pas connecte en Wifi."
return 2
else
return 3
fi
}
#
# Fonction qui connecte a FreeWifi
#
do_connect()
{
# Retourne
# 0 si la connexion s'est bien passee
# 1 si la connexion s'est mal passee
while true; do
echo "Envoi des identifiants a l'interface FreeWifi..."
WGET_OUT=$(wget -qO - --post-data="login=${LOGIN}&password=${PASSWORD}" "${URL_FREE_AUTH}" 2>/dev/null | grep -c "${CONNEXION_REUSSIE_FREE}")
echo "Les identifiants ont ete envoyes."
ping -q -c2 ${URL_GOOGLE} 2>&1
if [ $? -eq 0 ] && [ ${WGET_OUT} -eq 0 ]; then
echo "Modification du MTU de l'interface wlan0..."
ifconfig wlan0 mtu 1460 2>/dev/null
echo "Le MTU a ete modifie : $(ifconfig wlan0 | sed -n 's/.*mtu \([0-9]*\).*$/\1/p')"
echo "La connexion a FreeWifi s'est bien passee."
return 0
exit 0
else
echo "La connexion s'est mal passee, les identifiants n'ont pas ete acceptes."
fi
done
}
case "$1" in
start)
do_status
case "$?" in
0)
echo "Nous sommes deja connecte en FreeWifi."
exit 0
;;
1|2)
do_stop
do_start
case "$?" in
0)
exit 0
;;
1)
exit 1
;;
*)
echo "Une erreur s'est produite dans start !"
exit 3
;;
esac
;;
*)
echo "Une erreur s'est produite dans start !"
exit 3
;;
esac
;;
stop)
do_stop
case "$?" in
0)
exit 0
;;
1)
exit 1
;;
*)
echo "Une erreur s'est produite dans stop !"
exit 2
;;
esac
;;
restart)
do_stop
do_start
case "$?" in
0)
exit 0
;;
1)
exit 1
;;
2)
exit 2
;;
*)
echo "Une erreur s'est produite dans restart !"
exit 3
;;
esac
;;
status)
do_status
case "$?" in
0)
exit 0
;;
1)
exit 1
;;
2)
exit 2
;;
*)
echo "Une erreur s'est produite dans status !"
exit 3
;;
esac
;;
connect)
do_connect
case "$?" in
0)
exit 0
;;
1)
exit 1
;;
*)
echo "Une erreur s'est produite dans connect !"
exit 3
;;
esac
;;
*)
echo "Usage: $0 {start|stop|restart|status|connect}" >&2
exit 3
;;
esac
exit 0
Dernière modification par liberio (Le 08/11/2017, à 01:10)
Hors ligne
#56 Le 07/11/2017, à 02:29
- EuReKa-LoS
Re : [RESOLU]Automatiser connexion FreeWifi
Hello petit up pour savoir si à l'heure actuel il n'existe pas une nouvelle version de ce script
Je fais des tests actuellement et même sous ubuntu 12 je n'arrive pas a le faire fonctionné.
"Obtention d'une adresse IP par DHCP..."
Mais rien, le portail captif Free à changé ?
Hors ligne
#57 Le 07/11/2017, à 08:52
- xubu1957
Re : [RESOLU]Automatiser connexion FreeWifi
Bonjour,
même sous ubuntu 12 je n'arrive pas a le faire fonctionné.
En version 12.04 precise ?
Depuis le 28 avril 2017, Ubuntu 12.04 LTS est en fin de vie . Elle ne profite plus de nouvelle mise à jour de sécurité, et les paquets logiciels pour cette version sont déplacés dans des serveurs d'archive. Pour continuer à recevoir des mises à jour de sécurité, il est vivement recommandé de mettre à niveau votre version d'Ubuntu vers une version activement soutenue.
Une version non soutenue, à remplacer de préférence par une version 16.04.1 LTS.
Conseils pour les nouveaux demandeurs et pas qu'eux
Important : Pensez à passer vos sujets en [Réso|u] lorsque ceux-ci le sont, au début du titre en cliquant sur Modifier sous le premier message, et un bref récapitulatif de la solution à la fin de celui-ci. Merci. Membre de Linux-Azur
En ligne
#58 Le 07/11/2017, à 13:15
- EuReKa-LoS
Re : [RESOLU]Automatiser connexion FreeWifi
Je vais développé un peu, j'ai d'abord mit en place le script sur Debian "strech" sous Raspberry Pi Model A sans succès.
Normal le network manager n'est plus le même.
J'ai ensuite fait des tests sous Ubuntu 17.04 sans succès puis 16.04 sans succès non plus et enfin 12.04 mais ici c'est une demie victoire.
Donc le script se lance bien avec
#Utilisation: sudo ./freewifi.sh
Mais ici il reste bloqué sur :
Activation de l'interface wlan0...
Association de l'interface wlan0 avec le reseau Freewifi...
L'interface wlan0 est associee au reseau Freewifi
Obtention d'une adresse IP par DHCP
Mais lorsque je vais dans le network-manager sur ubuntu 12.04 desktop et que je sélectionne manuellement Freewifi en connexion le script se débloque et se log ect
A partir de la ça fonctionne ping ect du coup je vais refaire les tests sur 17.04 pour voir ce soir
Hors ligne
#59 Le 21/03/2018, à 12:56
- EuReKa-LoS
Re : [RESOLU]Automatiser connexion FreeWifi
Salut, alors j'ai pas mal planché sur les problèmes rencontré.
Le script fonctionne pour une connexion unique mais ne semble pas bouclé pour check la connexion.
Donc dans un crontab j'ai juste prit soin de faire des relance pour "test"; j'ai aussi fait des correction mineur (encodage caca) pour faire fonctionner le tout.
Donc le script final de Liberio:
#!/bin/sh
#Utilisation: sudo ./freewifi.sh
#Source: http://forum.ubuntu-fr.org/viewtopic.php?id=325891&p=2
LOGIN='YourLoginHere'
PASSWORD='YourPasswordHere'
URL_FREE='https://wifi.free.fr'
URL_FREE_AUTH='https://wifi.free.fr/Auth'
URL_GOOGLE='www.google.com'
CONNEXION_FREE='CONNEXION AU SERVICE'
DEJA_CONNECTE_FREE="Site accessible uniquement à partir d'une Freebox"
PAS_CONNECTE_FREE='Login manquant'
CONNEXION_REUSSIE_FREE='CONNEXION AU SERVICE REUSSIE'
CHECK_INTERVAL=10
INTERFACE='wlan0'
#
# Fonction qui nous connecte au FreeWifi
#
do_start()
{
# Retourne
# 0 si le Wifi a ete demarre
# 1 si le Wifi n'a pas pu etre demarre
# Autre si une erreur survient
while true; do
echo "Activation de l'interface ${INTERFACE}..."
rfkill unblock wifi
sleep 5
ifconfig ${INTERFACE} up
echo "Association de l'interface ${INTERFACE} avec le reseau FreeWifi..."
iwconfig ${INTERFACE} essid FreeWifi
[ ! -f /sbin/iwconfig -o ! -x /sbin/iwconfig ] && return 1
[ $(iwconfig 2>&1 | grep -i 'freewifi' | wc -l) -eq 0 ] && echo "${INTERFACE} n'est pas associee a FreeWifi." && return 1
echo "L'interface ${INTERFACE} est associee au reseau FreeWifi."
echo "Obtention d'une adresse IP par DHCP..."
dhclient ${INTERFACE}
if [ $(ifconfig ${INTERFACE} | grep -i 'inet' | wc -l) -eq 0 ]; then
echo "Aucune IP n'est disponible pour l'instant."
else
echo "Une IP vient de nous etre affectee : $(ifconfig ${INTERFACE} | sed -n 's/.*inet \([^.]*.[^.]*.[^.]*.[^ ]*\).*$/\1/p')"
#while true; do
TEST_PAGE=$(wget -SO- -T 1 -t 1 ${URL_FREE} 2>&1)
sleep 3
IS_FREE=$(echo "${TEST_PAGE}" | grep -i "${CONNEXION_FREE}" | grep -i "FreeWifi")
if [ "X$IS_FREE" != "X" ]; then
do_connect
if [ $? -eq 0 ]; then
return 0
fi
else
echo "Nous n'avons pas trouve la chaine '${CONNEXION_FREE}' dans la page ${URL_FREE}."
echo "Voici le contenu de la page de connexion : ${TEST_PAGE}".
fi
#done
fi
echo "Nous allons re-essayer dans ${CHECK_INTERVAL} secondes."
sleep ${CHECK_INTERVAL}
done
}
#
# Fonction qui arrete le Wifi
#
do_stop()
{
# Retourne
# 0 si le Wifi a ete arretee
# 1 si le Wifi n'a pas pu etre arretee
# 2 si une autre erreur survient
echo "Arret de la connexion Wifi..."
ifconfig ${INTERFACE} down
rfkill block wifi
sleep 5
if [ $? -eq 0 ]; then
echo "La connexion Wifi a ete arretee."
return 0
elif [ $? -eq 1 ]; then
echo "La connexion Wifi n'a pas pu etre arretee."
return 1
else
return 3
fi
}
#
# Fonction qui teste la connection Wifi
#
do_status()
{
# Retourne
# 0 si nous sommes deja connecte a FreeWifi
# 1 si nous sommes deja connecte mais pas en FreeWifi, ou si ping n'a pas recu assez de paquets en réponse
# 2 si nous ne sommes pas connecte en Wifi
# 3 si une autre erreur survient
TEST_PAGE=$(wget -SO- -T 1 -t 1 ${URL_FREE_AUTH} 2>&1)
IS_FREE=$(echo "${TEST_PAGE}" | grep -i "${DEJA_CONNECTE_FREE}")
ping -q -c2 ${URL_GOOGLE} 2>&1
if [ $? -eq 0 ]; then
if [ "X${IS_FREE}" != "X" ]; then
echo "Nous sommes deja connecte a FreeWifi."
return 0
elif [ "X$(echo "${TEST_PAGE}" | grep -i "${PAS_CONNECTE_FREE}")" != "X" ] && [ $(ifconfig ${INTERFACE} | grep -i 'inet adr' | wc -l) -ne 0 ] && [ "$(wget -q -T 1 -t 1 ${URL_FREE})" ]; then
echo "Nous sommes deja connecte, mais pas en FreeWifi."
return 1
else
echo "Un de nos tests de connexion a echoue."
return 3
fi
elif [ $? -eq 1 ]; then
echo "Ping n'a pas recu assez de paquets en reponse."
return 1
elif [ $(ifconfig ${INTERFACE} | grep -i 'inet adr' | wc -l) -eq 0 ]; then
echo "Nous ne sommes pas connecte en Wifi."
return 2
else
return 3
fi
}
#
# Fonction qui connecte a FreeWifi
#
do_connect()
{
# Retourne
# 0 si la connexion s'est bien passee
# 1 si la connexion s'est mal passee
while true; do
echo "Envoi des identifiants a l'interface FreeWifi..."
WGET_OUT=$(wget -qO - --post-data="login=${LOGIN}&password=${PASSWORD}" "${URL_FREE_AUTH}" 2>/dev/null | grep -c "${CONNEXION_REUSSIE_FREE}")
echo "Les identifiants ont ete envoyes."
ping -q -c2 ${URL_GOOGLE} 2>&1
if [ $? -eq 0 ] && [ ${WGET_OUT} -eq 0 ]; then
echo "Modification du MTU de l'interface ${INTERFACE}..."
ifconfig ${INTERFACE} mtu 1460 2>/dev/null
echo "Le MTU a ete modifie : $(ifconfig ${INTERFACE} | sed -n 's/.*mtu \([0-9]*\).*$/\1/p')"
echo "La connexion a FreeWifi s'est bien passee."
return 0
exit 0
else
echo "La connexion s'est mal passee, les identifiants n'ont pas ete acceptes."
fi
done
}
case "$1" in
start)
do_status
case "$?" in
0)
echo "Nous sommes deja connecte en FreeWifi."
exit 0
;;
1|2)
do_stop
do_start
case "$?" in
0)
exit 0
;;
1)
exit 1
;;
*)
echo "Une erreur s'est produite dans start !"
exit 3
;;
esac
;;
*)
echo "Une erreur s'est produite dans start !"
exit 3
;;
esac
;;
stop)
do_stop
case "$?" in
0)
exit 0
;;
1)
exit 1
;;
*)
echo "Une erreur s'est produite dans stop !"
exit 2
;;
esac
;;
restart)
do_stop
do_start
case "$?" in
0)
exit 0
;;
1)
exit 1
;;
2)
exit 2
;;
*)
echo "Une erreur s'est produite dans restart !"
exit 3
;;
esac
;;
status)
do_status
case "$?" in
0)
exit 0
;;
1)
exit 1
;;
2)
exit 2
;;
*)
echo "Une erreur s'est produite dans status !"
exit 3
;;
esac
;;
connect)
do_connect
case "$?" in
0)
exit 0
;;
1)
exit 1
;;
*)
echo "Une erreur s'est produite dans connect !"
exit 3
;;
esac
;;
*)
echo "Usage: $0 {start|stop|restart|status|connect}" >&2
exit 3
;;
esac
exit 0
Pour bien sur ne pas resté bloquer au DHCP dans "/etc/network/interfaces"
allow-hotplug wlan0
auto wlan0
iface wlan0 inet dhcp
Au lacement de ma Rasp, ca fonctionne nickel.
Elle se connecte et reste connectée sans problème; fin presque et il es de taille
Enfaîte je flood la rasp de dhcpclient -v wlanx
Du coup elle freeze rapidement (Raspberry model A) et avec ma Raspberry 3 c'est chocolat aussi.
J'ai bien parcourus le script sans voir de fuite dans les boucles, c'est un conflit de paquet dhcp ?
Hors ligne