CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • 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 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[Bash] script auto-reconnexion freewifi

Pseudo supprimé
Pseudo supprimé 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é
Pseudo supprimé
Pseudo supprimé 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é
Pseudo supprimé 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é
Pseudo supprimé
Pseudo supprimé 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
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é
Pseudo supprimé 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
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é
Pseudo supprimé 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
Niveau 16
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é
Pseudo supprimé 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é
Pseudo supprimé
Pseudo supprimé 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é
Pseudo supprimé
Pseudo supprimé 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é
Pseudo supprimé 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]]

Sous forums
  • Aide à l'achat Mac
  • Steam Deck
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Macintosh
  • Hardware
La vidéo du moment