Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#51 Le 31/05/2013, à 12: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, à 12:48)

Hors ligne

#52 Le 02/06/2013, à 08: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, à 16: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 roll

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, à 22: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, à 10: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 &agrave 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, à 00:10)

Hors ligne

#56 Le 07/11/2017, à 01: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 smile
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, à 07:52

xubu1957

Re : [RESOLU]Automatiser connexion FreeWifi

Bonjour,

EuReKa-LoS a écrit :

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ésolu] 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, à 12: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 wink

Hors ligne

#59 Le 21/03/2018, à 11: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 &agrave 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 big_smile
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.
1521506529-2018031906552396.png

J'ai bien parcourus le script sans voir de fuite dans les boucles, c'est un conflit de paquet dhcp ? hmm

Hors ligne