CONNEXION
  • RetourJeux
    • Tests
    • Soluces
    • Previews
    • Sorties
    • Hit Parade
    • Les + attendus
    • Tous les Jeux
  • RetourActu
    • Culture Geek
    • Astuces
    • Réalité Virtuelle
    • Rétrogaming
    • Toutes les actus
  • RetourHigh-Tech
    • Actus JVTECH
    • Bons plans
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTECH
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch
    • Xbox Series
    • Overwatch 2
    • FUT 23
    • League of Legends
    • Genshin Impact
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • PS4
  • One
  • Switch
  • Wii U
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Etoile Abonnement RSS

Sujet : [Bash] script auto-reconnexion freewifi

DébutPage précedente
1
Page suivantePage suivante
Pseudo supprimé
Niveau 10
20 novembre 2016 à 18:54:25

J'aimerai avoir votre avis sur mon script d'auto-reconnexion à freewifi et s'il y a des choses améliorables.
j'y connais pas grand chose en bash, je ne fais que du javascript et du php habituellement donc excusez moi si le code est dégueulasse

Dans le principe j'ai cherché à faire un script pour me reconnecter automatiquement à freewifi et qui vérifie toutes les 10 secondes que je suis connecté à internet, si ce n'est pas le cas on recommence la connexion

#!/bin/sh
#script auto-reconnxion freewifi
url="https://wifi.free.fr/Auth"
utilisateur="**********"
motdepasse="**********"
texte1="CONNEXION AU SERVICE REUSSIE"
texte2="Site accessible uniquement &agrave partir d'une Freebox:"
nombre=0
duree=10

function comptage {
    nombre=$(($nombre+1))
    echo $nombre
    sleep $duree
}

while true; do

    if ping 8.8.8.8 -c 1 &> /dev/null; then
        clear
        echo "Connecté à internet"
        comptage
    else

        if curl -s -F "login=${utilisateur}" -F "password=${motdepasse}" "${url}" | grep -q -e "${texte1}" -e "${texte2}"; then
            if ping 8.8.8.8 -c 1 &> /dev/null; then
                #notify-send "Connecté à FreeWifi" "FreeWifi"
                clear
                echo "Identification ok - Connecté à internet"
                comptage
            else
                clear
                echo "Identification ok - Non connecté à internet"
                comptage
            fi
        else
            clear
            echo "Identification échoué"
            comptage
        fi

    fi

done
Message édité le 20 novembre 2016 à 18:57:11 par
Pseudo supprimé
Niveau 6
21 novembre 2016 à 15:37:56

Je me demande si c'est pas mieux de faire un genre de ipconfig getifaddr [ton interface] ou du genre, au lieu de lâcher un paquet ICMP vers google ?

Pseudo supprimé
Niveau 10
21 novembre 2016 à 17:13:49

Le 21 novembre 2016 à 15:37:56 tolsadus a écrit :
Je me demande si c'est pas mieux de faire un genre de ipconfig getifaddr [ton interface] ou du genre, au lieu de lâcher un paquet ICMP vers google ?

Bah c'est pour tester si la connexion internet est vraiment active, parce qu'on peut être connecté à un hot-spot freewifi sans être connecté à internet, c'est un drôle de bug qui m'arrive souvent, et pas qu'à moi d'après ce que j'ai pu voir sur le forum free.

S'il n'y a pas de connexion internet juste après le login, il faut recommencer jusqu'à ce que la connexion soit active

Message édité le 21 novembre 2016 à 17:14:27 par
Pseudo supprimé
Niveau 6
22 novembre 2016 à 07:52:50

En effet alors, étrange. Mais bon normalement les freebox marchent plutôt bien.
C'est surement un problème de distance ?

Je suis pas spécialement fan des variables en français mais bon. [[sticker:p/1lmb]]

f0c300 f0c300
MP
Niveau 10
22 novembre 2016 à 10:05:17

Il parle des hotspots free-wifi.
T'as jamais ete etudiant avec pour seule connection les hotspots sfr et free de ton immeuble en allant gratter des mdp a droite a gauche? :noel:

Ce que tu peux faire c'est trouver une adresse IP plus proche de toi que 8.8.8.8, tu auras une reponse a priori plus rapide. (genre le DNS de free, ils utilisent quoi?)

Pseudo supprimé
Niveau 10
22 novembre 2016 à 17:54:52

Le 22 novembre 2016 à 10:05:17 f0c300 a écrit :
Ce que tu peux faire c'est trouver une adresse IP plus proche de toi que 8.8.8.8, tu auras une reponse a priori plus rapide. (genre le DNS de free, ils utilisent quoi?)

Ah oui pas bête [[sticker:p/1jnh]]
Par contre j'ai un doute, je me demande si les dns de free ne sont pas directement accessible sans même les logins, si c'est le cas ça fausserait la connexion à internet

crevebedaine crevebedaine
MP
Niveau 5
22 novembre 2016 à 18:49:37

Le 20 novembre 2016 à 18:54:25 ViceKitty a écrit :

  1. !/bin/sh
  2. script auto-reconnxion freewifi

url="https://wifi.free.fr/Auth"

Il manque un e : "reconnexion".

[[sticker:p/1ljo]][[sticker:p/1ljm]][[sticker:p/1ljr]]

Pseudo supprimé
Niveau 10
22 novembre 2016 à 20:24:54

Le 22 novembre 2016 à 18:49:37 crevebedaine a écrit :
Il manque un e : "reconnexion".

[[sticker:p/1kks]] lol

Je vais faire une petite interface avec glade pour rendre ça mieux que dans un terminal

deepblue deepblue
MP
Niveau 13
23 novembre 2016 à 09:54:40
shellcheck /tmp/test.sh

In /tmp/test.sh line 11:
function comptage {
^-- SC2113: 'function' keyword is non-standard. Use 'foo()' instead of 'function foo'.


In /tmp/test.sh line 12:
    nombre=$(($nombre+1))
              ^-- SC2004: $ on variables in (( )) is unnecessary.


In /tmp/test.sh line 19:
    if ping 8.8.8.8 -c 1 &> /dev/null; then
                         ^-- SC2039: #!/bin/sh was specified, but &> is not standard.


In /tmp/test.sh line 26:
            if ping 8.8.8.8 -c 1 &> /dev/null; then
                                 ^-- SC2039: #!/bin/sh was specified, but &> is not standard.

Autres remarques :

  • effectivement, c'est toujours une bonne idée d'écrire en anglais parce que ton script est suceptible d'intéresser du monde et pas forcément des francophones
  • on préfère utiliser printf "foo\n" à echo "foo" car echo ne réagit pas de la même façon sur les autres systèmes est printf est à priori plus standard (et ça permet de faire de l'i18n un peu plus facilement)
Pseudo supprimé
Niveau 10
24 novembre 2016 à 16:55:59

ok j'ai modifié le script :

#!/bin/sh
#script FreeWifi AutoRec
url="https://wifi.free.fr/Auth"
login="********"
password="********"
text1="CONNEXION AU SERVICE REUSSIE"
text2="Site accessible uniquement &agrave partir d'une Freebox:"
dns="8.8.8.8"
#dns="212.27.40.241" #dns free
timeloop=10

waiting() {
    sleep $timeloop
}

while true; do

    if ping $dns -c 1 > /dev/null; then
        clear
        printf "Connecté"
        waiting
    else
        clear
        printf "Essai"
        if curl -s -F "login=${login}" -F "password=${password}" "${url}" | grep -q -e "${text1}" -e "${text2}"; then
            if ping $dns -c 1 > /dev/null; then
                #notify-send -t 500 -u low -i /usr/share/icons/la-capitaine-icon-theme/apps/scalable/freewifi.svg "Connecté à FreeWifi" "FreeWifi"
                clear
                printf "Identifié"
            fi
        else
            clear
            printf "Non connecté"
            waiting
        fi
    fi

done
Message édité le 24 novembre 2016 à 16:57:36 par
Pseudo supprimé
Niveau 6
05 décembre 2016 à 12:11:13

Le 24 novembre 2016 à 16:55:59 ViceKitty a écrit :
ok j'ai modifié le script :

#!/bin/sh
#script FreeWifi AutoRec
url="https://wifi.free.fr/Auth"
login="********"
password="********"
text1="CONNEXION AU SERVICE REUSSIE"
text2="Site accessible uniquement &agrave partir d'une Freebox:"
dns="8.8.8.8"
#dns="212.27.40.241" #dns free
timeloop=10

waiting() {
    sleep $timeloop
}

while true; do

    if ping $dns -c 1 > /dev/null; then
        clear
        printf "Connecté"
        waiting
    else
        clear
        printf "Essai"
        if curl -s -F "login=${login}" -F "password=${password}" "${url}" | grep -q -e "${text1}" -e "${text2}"; then
            if ping $dns -c 1 > /dev/null; then
                #notify-send -t 500 -u low -i /usr/share/icons/la-capitaine-icon-theme/apps/scalable/freewifi.svg "Connecté à FreeWifi" "FreeWifi"
                clear
                printf "Identifié"
            fi
        else
            clear
            printf "Non connecté"
            waiting
        fi
    fi

done

Sinon j'avais une idée pour ton script, mettre en argument le login/password/dns voulu ?

Et si tu spécifies pas de dns, ca met ceux de google/free/whatever tu preferes

Message édité le 05 décembre 2016 à 12:11:34 par
Pseudo supprimé
Niveau 10
05 décembre 2016 à 12:32:25

Le 05 décembre 2016 à 12:11:13 tolsadus a écrit :
Sinon j'avais une idée pour ton script, mettre en argument le login/password/dns voulu ?

Et si tu spécifies pas de dns, ca met ceux de google/free/whatever tu preferes

j'ai mis une adresse dns en ping mais ça peut être n'importe quelle ip web, c'est juste pour tester on a accès au web.

Pour la connexion à freewifi tu es obligé d'utiliser les dns de free dans /etc/resolv.conf, tout autre dns ou l'utilisation de unbound fait échouer le login à freewifi

Pseudo supprimé
Niveau 6
07 décembre 2016 à 15:52:35

Le 05 décembre 2016 à 12:32:25 ViceKitty a écrit :

Le 05 décembre 2016 à 12:11:13 tolsadus a écrit :
Sinon j'avais une idée pour ton script, mettre en argument le login/password/dns voulu ?

Et si tu spécifies pas de dns, ca met ceux de google/free/whatever tu preferes

j'ai mis une adresse dns en ping mais ça peut être n'importe quelle ip web, c'est juste pour tester on a accès au web.

De préférence, prend une ip qui tomberas jamais (un datacenter de chez google, le cdn de microsoft, etc...)

Pour la connexion à freewifi tu es obligé d'utiliser les dns de free dans /etc/resolv.conf, tout autre dns ou l'utilisation de unbound fait échouer le login à freewifi

Intéressant, je savais pas du tout ! Merci ! [[sticker:p/1kkn]]

DébutPage précedente
1
Page suivantePage suivante
Répondre
Prévisu
?
Victime de harcèlement en ligne : comment réagir ?
La vidéo du moment