Se connecter avec
S'enregistrer | Connectez-vous

Connexion automatique à un hotspot neuf

Dernière réponse : dans Programmation
Expert Programmation

Bonsoir !

Actuellement sous windows vista, j'aimerais savoir comment faire pour que la page de connexion hotspot se log toute seule tout le temps (faire comme si on avait jamais de coupure quoi...)

Elle se déconnecte toutes les deux heures et c'est assez génant

J'ai trouvé une solution en shell mais je ne sais pas si cela marche, si quelqu'un pouvais y regarder...
Et comment lancer ce .sh automatiquement tout le temps ? Avec quel programme ?

Merci à tous


  1. #!/bin/bash
  2.  
  3. url="<a href="https://hotspot.neuf.fr/nb4_crypt.php" target="_blank">https://hotspot.neuf.fr/nb4_crypt.php</a>"
  4. okmatch="licitations"
  5. login="000000"
  6. password="000000"
  7.  
  8. # quel que soit le site visité, on sera redirigé vers le
  9. # portail captif qui génerera un token. L'utilisation du switch
  10. # -L permet de suivre la redirection de type 302
  11. challenge=`curl -L <a href="http://www.google.com" target="_blank">http://www.google.com</a>|grep name=\"challenge|sed -r 's/.*value=\"([0-9a-z]+)\".*/\1/'`
  12.  
  13. #echo "challenge: ${challenge}"
  14.  
  15. # la phase 2 renvoie une réponse au token
  16. response=`curl -L -d "username=${login}&password=${password}&cond=on&accessType=neuf&nb4=<a href="https://hotspot.neuf.fr/nb4_crypt.php&challenge=" target="_blank">https://hotspot.neuf.fr/nb4_crypt.php&challenge=</a>${challenge}" ${url}|grep response=|sed -r 's/.*response=([0-9a-z]+).*/\1/'`
  17.  
  18. #echo "reponse: ${response}"
  19. # enfin, un refresh renvoie sur une page qui attend la
  20. # réponse précedente pour activer la connexion
  21. final=`curl -L "<a href="http://192.168.2.1:3990/logon?username=ssowifi.neuf.fr/" target="_blank">http://192.168.2.1:3990/logon?username=ssowifi.neuf.fr/</a>${login}&response=${response}&uamip=192.168.2.1&userurl=http%3A%2F%2F<a href="http://www.fon.com%2Ffr%2Flanding%2Ffoneroneufbox%3Bfon%3B%3B&lang=fr&ARCHI" target="_blank">www.fon.com%2Ffr%2Flanding%2Ffoneroneufbox%3Bfon%3B%3B&...</a>"|grep ${okmatch}`
  22.  
  23. if [ ! -z "${final}" ];then
  24. echo "connected"
  25. else
  26. echo "connection failed, one more time"
  27. sleep 30
  28. url="<a href="https://hotspot.neuf.fr/nb4_crypt.php" target="_blank">https://hotspot.neuf.fr/nb4_crypt.php</a>"
  29. okmatch="licitations"
  30. login="000000"
  31. password="000000"
  32.  
  33. # quel que soit le site visité, on sera redirigé vers le
  34. # portail captif qui génerera un token. L'utilisation du switch
  35. # -L permet de suivre la redirection de type 302
  36. challenge=`curl -L <a href="http://www.google.com" target="_blank">http://www.google.com</a>|grep name=\"challenge|sed -r 's/.*value=\"([0-9a-z]+)\".*/\1/'`
  37.  
  38. #echo "challenge: ${challenge}"
  39.  
  40. # la phase 2 renvoie une réponse au token
  41. response=`curl -L -d "username=${login}&password=${password}&cond=on&accessType=neuf&nb4=<a href="https://hotspot.neuf.fr/nb4_crypt.php&challenge=" target="_blank">https://hotspot.neuf.fr/nb4_crypt.php&challenge=</a>${challenge}" ${url}|grep response=|sed -r 's/.*response=([0-9a-z]+).*/\1/'`
  42.  
  43. #echo "reponse: ${response}"
  44. # enfin, un refresh renvoie sur une page qui attend la
  45. # réponse précedente pour activer la connexion
  46. final=`curl -L "<a href="http://192.168.2.1:3990/logon?username=ssowifi.neuf.fr/" target="_blank">http://192.168.2.1:3990/logon?username=ssowifi.neuf.fr/</a>${login}&response=${response}&uamip=192.168.2.1&userurl=http%3A%2F%2F<a href="http://www.fon.com%2Ffr%2Flanding%2Ffoneroneufbox%3Bfon%3B%3B&lang=fr&ARCHI" target="_blank">www.fon.com%2Ffr%2Flanding%2Ffoneroneufbox%3Bfon%3B%3B&...</a>"|grep ${okmatch}`
  47.  
  48. if [ ! -z "${final}" ];then
  49. echo "connected"
  50. else
  51. echo "connection failed, lets cron retry"
  52. fi

Autres pages sur : connexion automatique hotspot

Lassé par la pub ? Créez un compte
Expert Programmation

Salut,

Tu as un script bash alors que tu es sous Vista...

Sinon, pour exécuter un fichier tous les X temps, tu as le planificateur de tâches disponible dans Accessoires / Outils système
Expert Programmation

Tu as un script bash alors que tu es sous Vista...

Est-ce que je vais pouvoir le faire fonctionner ?
Si non, est-ce possible d'en créer un pour vista ?
Si oui, je le mets dans un bloc note, enregistrer en .sh et je le mets dans le planificateur de tâches toutes les 2h et c'est bon ?
Expert Programmation

Ben quand je l'enregistre en .sh il me dit : .dll commune du Shell

Sinon tu pourrais me dire quel script serait adapter dans ce cas là ?

Je t'explique vite fait, toutes les deux heures, je dois me réidentifier sur la hotspot (déconnexion automatique) et je ne voudrais pas faire cela tout le temps, donc il me faudrait un script qui le fasse seul, comme ça quand je suis pas là il reste connecté sur internet.

Merci beaucoup :) 
Expert Programmation

SiM07, mon script marchera avec Cygwin ? Il est correct ? (j'ai trouvé ça sur le net...)

J'ai essayé avec tache planifié et ça ne marche pas

Chose que je ne comprends pas trop :
j'ai copié le code dans un blocnote, enregistré en .sh (tous les fichiers et non .txt) puis mis sur mon bureau.
Donc j'installe Cygwin, et que dois-je faire après ? (un mini tuto si c'est possible)
Expert Programmation

Et bien il y a l'installation étape par étape de cygwin, avec l'installation de cron. Car lors de l'installation de cygwin, tu as la possibilité d'installer cron, je ne sais pas si tu l'as fait lors de ton installation...
Après, on t'indique quelques commandes à taper pour configurer cron, si tu l'as bien fait tu devrais avoir le service correspondant dans les services windows (tape la commande services.msc) pour avoir la liste des services windows.

Ensuite tu créé ton fichier avec ton script bash, et tu le fait exécuter avec cron. Pour apprendre à te servir de cron, tu peux regarder ce lien : http://doc.ubuntu-fr.org/cron
Expert Programmation

je comprends déjà mieux l'utilisation de Cygwin, j'ai installé ce qu'il me fallait (toute la partie admin) mais quand je lance Cygwin pour rentrer ces valeurs, ça ne marche pas :

chmod +r etc/passwd
chmod +r etc/group


Il me dit :
chmod : changing permission of etc/passwd (ou /group) : permission denied

Pour info, j'ai windows vista et je pense que c'est à cause des permissions système, mais c'est pas moi le pro...
Expert Programmation

Ah pardon, j'avais pas fait attention.

Cygwin ne t'a pas demandé de créer un mot de passe admin lorsque tu l'as installé ? Ca fait longtemps que j'ai pas utilisé Cygwin, je ne me souviens plus si tu es directement en root ou pas, mais ça m'étonnerait.
Avant de taper les deux commandes chmod, essaie de taper la commande su
Expert Programmation

Ok, vu que tu as répondu non à la question "Do you want to the cron deamon to run as yourself?", il essaie de trouver un compte qui a des privilèges, vu qu'il en trouve pas, il veut essayer d'en créer un.

Vu que tu ne vas utiliser cron qu'avec ton compte utilisateur, répond oui à cette question, et tu ne devrais pas avoir de problèmes pour la suite.
Expert Programmation

J'ai maintenu MAJ, j'ai cliqué droit sur Cygwin, j'ai fait : executer en tant qu'admin, et je crois avoir réussi...

J'obtiens ceci maintenant :




J'ai un serive (cron deamon) maintenant...
Mais je crois qu'il y a encore des problèmes...
Expert Programmation

Hmm... donc là il a pas réussi à démarrer le service.
Tu peux essayer de le démarrer à la main (tu vas dans services.msc et tu démarres le services correspondant).
Tu devrais pouvoir utiliser cron après.
Expert Programmation

Erreur 1069 : L'échec d'ouverture de session a empêché le démarrage du service...


EDIT :
Dans les options du service, j'ai modifié le type de connexion... J'ai doublé cliqué dessus, j'ai pris l'onglet "connexion", j'ai mis "compte système local" (je n'ai pas coché l'option "interagir avec le bureau".

Est-ce bon ???
Si oui, comment exécuter le script maintenant ?
Expert Programmation

Tu as réussi à le démarrer le service ou pas au final ?

Si oui, maintenant :
Citation :
Ensuite tu créé ton fichier avec ton script bash, et tu le fait exécuter avec cron. Pour apprendre à te servir de cron, tu peux regarder ce lien : http://doc.ubuntu-fr.org/cron


Au départ, il faudra que tu fasses un crontab -e pour créer le fichier de cron. Après, il faudra ajouter une ligne dans ton fichier de cron pour lancer ton fichier. Tu peux trouver toutes les infos dans le lien que je t'ai donné.
Expert Programmation

Voilà ce que me donne crontab -e.




A noté que quand j'essaie de lancer crontab.exe qui se trouve dans le dossier de Cygwin, il m'ouvre une invite de commande qu'il referme aussitot (pas le temps de lire...)



Voilà pour ce qu'il est du service, je pense qu'il est bien activé ce cron...


Expert Programmation

Alors, oui le service cron est bien démarré.

Après, pour l'histoire de /bin/vi no such file or directory; c'est parce que vi n'a pas été installé avec cygwin.
Si tu relances une installation de cygwin, tu dois pouvoir ajouter des packages à ceux existants, tu dois pouvoir trouver vi dedans (si tu trouves vim, prend le aussi).
Sinon, autre solution, ça serait de voir quel éditeur de fichier tu as déjà d'installé sur ton cygwin, et de modifier l'éditeur par défaut... mais bon, à moins que tu connaisses bien linux, je ne pense pas que tu sauras dire quels éditeurs tu as déjà d'installés :) 


Edit: ah oui aussi, je ne sais pas si tu l'as déjà installé, mais installes le package curl dont tu vas avoir besoin dans ton script (toujours lors de l'installation de cygwin)
Expert Programmation

Voilà alors j'ai réinstallé
Donc avec toutes les explications j'en ai plein la tête et j'ai vraiment du mal pour lancer le script (tout du moins, essaie de configurer le crontab...)


Donc pour l'instant, j'ai lancé : crontab -e

Il m'affiche une belle fenêtre avec des ~ à chaque ligne donc je pense que c'est bien pour le configurer

Le script se trouve dans C:/cygwin/
Je veux le lancer toutes les 1min (ça ne ralenti pas le PC ?)
Donc il faut que j'écrive ça dans cron : */1 * * * *
Mais après je suis un peu pommé :s
Expert Programmation

Alors, déjà, il va falloir lancer une première fois ton script pour être sûr qu'il fonctionne. Imaginons que ton fichier de script se trouve dans /home/nowis et qu'il se nomme "script.sh", pour l'exécuter tu feras :
  1. cd /home/nowis
  2. ./script.sh


Ca devrait donc exécuter ton script, vérifie que tout fonctionne bien, que tu es toujours connecté à ton hotspot, etc...

Ensuite, on va vérifier que le service cron fonctionne bien, et qu'il t'exécute bien les tâches. Ce que tu peux faire, c'est ajouter cette ligne :
* * * * * echo `date` >> /tmp/date.log

Cette ligne va exécuter toutes les minutes la commande date (qui va te donner l'heure actuelle), et la résultat de la commande est écrit dans le fichier /tmp/date.log
Tu as juste besoin d'aller voir dans /tmp/date.log quelques minutes plus tard pour voir que tu as bien la date qui a été écrite chaque minute depuis que tu as ajouté la ligne.

Ensuite, pour l'exécuter toutes les minutes, tu peux tout simplement faire : * * * * * (* ou */1 c'est équivalent)
Après, je ne sais pas combien de temps va prendre ton script, il se peut que ça ralentisse un peu... Maintenant, il me semble que tu disais au début que tu devais le lancer toutes les 2h, donc un petit * */2 * * *, et ça devrait être réglé, non ?
Expert Programmation

En essayant de faire fonctionner mon script comme tu l'as dit :




(Si je compare, il n'aime pas trop les espaces et la commande "fi" (c'est pas plutot "if" ?



Quand j'essaie de faire la commande avec cron :




Là c'est un gros problème ^^' je croyais que ça marchait bien... :( 
Expert Programmation

Alors, pour l'exécution de ton script :
En fait, c'est qu'il doit y avoir des sauts de ligne (\r) qu'il n'aime pas... Windows utilise \r\n pour faire un saut de ligne, unix utilise \n (il me semble), ce qu'il fait qu'il ne reconnait pas vraiment \r...

Que te donne la commande file script.sh ?

Au passage "fi" existe en bash, if permet de commencer la condition et fi de la finir. Les mots sont inversés lorsqu'ils finissent la condition / boucle.

Ensuite, je me doutais bien que ça allait arriver, le moment où tu allais découvrir vi... :) 
En fait, là, quand tu édites ton fichier de cron, tu utilises l'éditeur vi qui a énormément de commandes pour faire tout plein de choses dans le fichier. Quand tu ouvres le fichier, tu n'es pas en mode édition par défaut, tu es juste en mode lecture, donc tu ne peux rien taper, si tu tapes quelque chose, ça va exécuter les différentes commandes de vi, dans ton cas, ça a du exécuter une recherche en utilisant une expression régulière, et donc te retourner une erreur.
Lis ce site pour des informations sur les commandes de vi : http://jph.durand.free.fr/vi.htm

A retenir :
i pour passer en mode insertion
Echap (la touche) pour sortir du mode insertion
:w pour sauvegarder (quand tu es en mode lecture)
:q pour quitter (si tu as fait des modifications, il te demande de sauvegarder avant)
:q! pour quitter sans sauvegarder
:wq pour sauvegarder et quitter
Expert Programmation

1) script.sh: Bourne-Again shell script text executable

2) Pour les problèmes de \r je fais quoi alors ?

3) Je ne comprends absolument pas l'éditeur vi :( 
J'ai bien taper "crontab -e" j'ai essayé de faire "i [entrer]" je suis donc reparti à la ligne, et j'ai essayé de faire le test comme tu me l'a indiqué, et après :q [entrer] et il ne m'a rien demandé...

4) Désolé de t'embêter...
Expert Programmation

1) et 2) En fait, j'attendais le résultat de file script.sh pour voir ce qu'on allait faire avec les \r
Ton fichier script.sh, tu l'as fait avec le bloc notes ? Réouvre le script avec le bloc notes (depuis windows donc), et quand tu l'enregistres, change l'encodage, met le en Unicode... en espérant que ça fonctionne ! Parce que sinon, je ne vois pas trop d'autre faire, à part recopier ligne par ligne depuis vi, ou sinon d'éditer le fichier avec vi pour supprimer les sauts de ligne, s'ils sont visibles.


3) Tu appuies sur la touche "i", puis tu entres ta ligne (* * * * * etc...), ensuite tu appuies sur "echap" pour passer en mode lecture, puis tu tapes ":wq", il va sauvegarder et quitter l'éditeur.
Tu peux ensuite taper la commande crontab -l pour lister toutes les entrées et vérifier que tu as bien ton entrée dedans.

4) pas de problème, je ne serai pas sur un forum si ça m'embêtait ! et puis j'aurais arrêté de répondre :p 
Expert Programmation

Ah ça y est j'ai tout compris :p 


Malheureusement pour le fichier en unicode, quand j'essaie de le lancer, il me dis : cannot execute binary file... :( 

Ensuite, crontab a l'air de bien fonctionner, juste un truc, quel touche utiliser pour faire le `date` car j'utilise le " " mais ça ne doit pas être ça...

Si refaire un script est trop compliqué, j'ai plus qu'à laisser tomber car je ne m'y connais absolument pas :( 

Comme je l'ai dit, je l'ai trouvé sur le web et la personne le faisait marcher sur linux avec cron...
Expert Programmation

Ok, donc ça marche pas quand c'est en unicode, donc, essaie d'éditer le fichier avec vi (vi script.sh) et tu devrais avoir des \r qui trainent je suppose, supprime les tous (dois y avoir un raccourci pour faire ça en deux trois clics sous vi, mais je le connais pas assez bien pour te dire comment).

Pour faire le `, c'est Alt Gr + 7
Et tu n'auras pas besoin de refaire un script, il faudra juste supprimer les \r, donc j'essayai de trouver la méthode la plus simple, c'est tout :) 
Expert Programmation

Alors en lisant attentivement le post de celui qui a laissé le message, à l'installation de Cygwin, il faut sélectionner "DOS / txt" donc je viens de le faire... (sinon il n'aime pas le fi soit-disant)...

En testant, cela à l'air de bien fonctionner :





Par contre, je vois bien la ligne de crontab, mais le date.log est toujours vide...

J'ai fait ainsi :
j'ouvre cygwin
je tape "crontab -e" puis je fais "i * * * * * echo `date` >> /tmp/date.log [echap] :wq" il sauvegarde et me dit que c'est bon, je vérifie avec "crontab -l" elle est bien là... J'attends 2-3 min et j'ouvre "date.log" mais c'est toujours blanc...
Expert Programmation

Vu que tu as réinstallé cygwin, vérifie que le service cron soit toujours démarré, au cas où.

Ensuite, entre ces quelques commandes à la suite et donne moi le résultat de leur exécution :
$ ps -lef | grep cron
$ cygrunsrv -Q cron
$ cygcheck.exe -c | grep cron
$ crontab -e
$ cat /tmp/date.log



Expert Programmation

C'est bizarre, parce que dans les processus (ps), il n'y a pas de trace de cron... Pourtant avec cygrunsrv, tu as le daemon cron qui est bien lancé...

Quand tu as tapé ton crontab -e, il te dit qu'il y a une erreur dans ton fichier... "bad minute", tu aurais une erreur sur les minutes... Es tu sûr que tu n'as pas mis "i" comme minute ? :) 
Il ne faut pas que tu vois i affiché à l'écran, c'est juste pour entrer en mode édition hein !

Que donne la commande : cat /tmp/crontab.9a6HIDqx0L ?
Expert Programmation

même erreur...

J'essaie de tout réinstaller et j'édit mon sujet après :) 



EDIT : après réinstallation, il y a un truc dans "date.log" !!! :

Tue Jan 13 22:07:01 2009
Tue Jan 13 22:08:02 2009



ça a l'air de fonctionner :) 


Donc je vais essayer le script maintenant et je te dis quoi !

On a avancé à grand pas aujourd'hui :)  Merci d'être beaucoup présent
Expert Programmation

J'aimerais que toutes les 1h55 il tourne en boucle pendant 10min.
Donc le code ça serait du style

55 1 * * * sh /cyg/script.sh


Et pour qu'il tourne pendant 10min par exemple, il faudrait que je rajoute X fait ce code sous mon script :
  1. # if [ ! -z "${final}" ];then
  2. # echo "connected"
  3. # else
  4. # echo "connection failed, one more time"
  5. # sleep 30
  6. # url="<a href="https://hotspot.neuf.fr/nb4_crypt.php" target="_blank">https://hotspot.neuf.fr/nb4_crypt.php</a>"
  7. # okmatch="licitations"
  8. # login="000000"
  9. # password="000000"
  10. #
  11. # # quel que soit le site visité, on sera redirigé vers le
  12. # # portail captif qui génerera un token. L'utilisation du switch
  13. # # -L permet de suivre la redirection de type 302
  14. # challenge=`curl -L <a href="http://www.google.com" target="_blank">http://www.google.com</a>|grep name=\"challenge|sed -r 's/.*value=\"([0-9a-z]+)\".*/\1/'`
  15. #
  16. # #echo "challenge: ${challenge}"
  17. #
  18. # # la phase 2 renvoie une réponse au token
  19. # response=`curl -L -d "username=${login}&password=${password}&cond=on&accessType=neuf&nb4=<a href="https://hotspot.neuf.fr/nb4_crypt.php&challenge=" target="_blank">https://hotspot.neuf.fr/nb4_crypt.php&challenge=</a>${challenge}" ${url}|grep response=|sed -r 's/.*response=([0-9a-z]+).*/\1/'`
  20. #
  21. # #echo "reponse: ${response}"
  22. # # enfin, un refresh renvoie sur une page qui attend la
  23. # # réponse précedente pour activer la connexion
  24. # final=`curl -L "<a href="http://192.168.2.1:3990/logon?username=ssowifi.neuf.fr/" target="_blank">http://192.168.2.1:3990/logon?username=ssowifi.neuf.fr/</a>${login}&response=${response}&uamip=192.168.2.1&userurl=http%3A%2F%2F<a href="http://www.fon.com%2Ffr%2Flanding%2Ffoneroneufbox%3Bfon%3B%3B&lang=fr&ARCHI" target="_blank">www.fon.com%2Ffr%2Flanding%2Ffoneroneufbox%3Bfon%3B%3B&...</a>"|grep ${okmatch}`
  25. #
  26. # if [ ! -z "${final}" ];then
  27. # echo "connected"
  28. # else
  29. # echo "connection failed, lets cron retry"
  30. # fi
Expert Programmation

Simdu80 a dit :
J'aimerais que toutes les 1h55 il tourne en boucle pendant 10min.
Donc le code ça serait du style

55 1 * * * sh /cyg/script.sh


Il me semble pas... ça voudrait dire que tu lances le script tous les jours à 1h55 du matin, pas que tu veux le lancer toutes les 1h55 !

Simdu80 a dit :

Et pour qu'il tourne pendant 10min par exemple, il faudrait que je rajoute X fait ce code sous mon script :
  1. # if [ ! -z "${final}" ];then
  2. # echo "connected"
  3. # else
  4. # echo "connection failed, one more time"
  5. # sleep 30
  6. # url="<a href="https://hotspot.neuf.fr/nb4_crypt.php" target="_blank">https://hotspot.neuf.fr/nb4_crypt.php</a>"
  7. # okmatch="licitations"
  8. # login="000000"
  9. # password="000000"
  10. #
  11. # # quel que soit le site visité, on sera redirigé vers le
  12. # # portail captif qui génerera un token. L'utilisation du switch
  13. # # -L permet de suivre la redirection de type 302
  14. # challenge=`curl -L <a href="http://www.google.com" target="_blank">http://www.google.com</a>|grep name=\"challenge|sed -r 's/.*value=\"([0-9a-z]+)\".*/\1/'`
  15. #
  16. # #echo "challenge: ${challenge}"
  17. #
  18. # # la phase 2 renvoie une réponse au token
  19. # response=`curl -L -d "username=${login}&password=${password}&cond=on&accessType=neuf&nb4=<a href="https://hotspot.neuf.fr/nb4_crypt.php&challenge=" target="_blank">https://hotspot.neuf.fr/nb4_crypt.php&challenge=</a>${challenge}" ${url}|grep response=|sed -r 's/.*response=([0-9a-z]+).*/\1/'`
  20. #
  21. # #echo "reponse: ${response}"
  22. # # enfin, un refresh renvoie sur une page qui attend la
  23. # # réponse précedente pour activer la connexion
  24. # final=`curl -L "<a href="http://192.168.2.1:3990/logon?username=ssowifi.neuf.fr/" target="_blank">http://192.168.2.1:3990/logon?username=ssowifi.neuf.fr/</a>${login}&response=${response}&uamip=192.168.2.1&userurl=http%3A%2F%2F<a href="http://www.fon.com%2Ffr%2Flanding%2Ffoneroneufbox%3Bfon%3B%3B&lang=fr&ARCHI" target="_blank">www.fon.com%2Ffr%2Flanding%2Ffoneroneufbox%3Bfon%3B%3B&...</a>"|grep ${okmatch}`
  25. #
  26. # if [ ! -z "${final}" ];then
  27. # echo "connected"
  28. # else
  29. # echo "connection failed, lets cron retry"
  30. # fi


Plutôt que de copier le code 150 fois, faudrait faire une boucle :) 
Une boucle while par exemple : http://www.patpro.net/blog/index.php/2006/01/29/9-quelq...
Lassé par la pub ? Créez un compte
Tom's guide dans le monde