Bonjour,
j'ai linux sur une vieille machine préhistorique et asthmatique, avec l'accès à internet par la fibre optique au travers d'un routeur bas de gamme castelnet cbw734ew. L'interface de commande de ce routeur est en http://192.168.0.1/ et je peux la consulter et faire des réglages avec mon firefox.
J'ai justement besoin chaque matin de provoquer la réinitialisation complète de ce routeur aux paramètres d'usine, par une page http://192.168.0.1/RgSecurity.asp, puis après la vingtaine de secondes que dure cette réinitialisation, il me faut autoriser l'accès à ma machine depuis internet sur une autre page http://192.168.0.1/RgDmzHost.asp (pour pouvoir accèder par ssh à ma machine depuis mon boulot). Il est bien évident qu'il y a avant tout cela un login en http://192.168.0.1/login.asp .
Est il possible d'automatiser par un script la modification de contenu de ces trois pages en envoyant au routeur les requêtes POST nécessaires ? Je pourrais faire lancer par un cron le script python que j'ai commencé, et cela m'éviterait d'avoir à passer plusieurs minutes chaque matin devant mon PC et me ferait gagner autant de sommeil ou de temps à passer à des activités moins répétitives et plus stimulantes intellectuellement.
Voici le script que j'ai commencé à faire, et je suis coincé dès la première requête POST parce que je ne sais pas bien la formuler. (si quelqu'un daigne m'aider je peux évidemment poster le code HTML de cette page)
En fait la commande "response.read()" ne se fait pas puisque juste auparavant il y a eu une redirection vers la page de login que je vois grace aux en-têtes, parce que la requête POST n'est pas bien formulée.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 #!/usr/bin/env python #-*- encoding:UTF-8 -*- import httplib, sys rtr_ip = "192.168.0.1" #______________________________________________________________________________| # page 0 = connexion : connection = httplib.HTTPConnection(rtr_ip) print "connection= ", connection # Ok jusque ici : <httplib.HTTPConnection instance at 0x97f1bec> #______________________________________________________________________________| # page 1 = login : headers = {"Content-type": "application/x-www-form-urlencoded"} connection.request("POST", "/goform/login.asp", "loginUsername=admin&loginPassword=password", headers) response = connection.getresponse() # print "response=", response # <httplib.HTTPResponse instance at 0x858db8c> print response.status, response.reason # 302 Redirect print response.getheader("Location") # l'entête Location (http://192.168.0.1:80/login.asp) print "response.read()=", response.read() # none
Merci de me donner des pistes de recherche de ce qu'il faut pour que ça marche, donc pour l'instant comment bien faire la requête POST. (ou une solution "toute cuite", mais je préfère chercher un peu...)
David
Partager