OVH Cloud OVH Cloud

javascript en mode texte

4 réponses
Avatar
Eric Tréhou
bonjour,

je dispose d'un réseau de 2 à 3 postes sous MacOSX, reliés par un
routeur
(http://www.alliedtelesyn.be/fr-be/products/cat/product.asp?cid=6&fid=24&pid=305&area=support)
à internet. Le pb est que fréquemment, ce routeur "plante" les
entrées/sorties, rendant impossible tout accés distant.Seule solution,
le reboot du routeur.
Malheureusement la seule interface avec ce routeur est http sur son port
80 et l'accés à sa "page de reboot" comporte une "étape" javascript
indispensable.
J'aimerais faire un petit script shell, tournant sur une machine du
réseau et capable de rebooter le routeur.
L'utilisation de lynx dans ce script me conduit sans pb jusqu'à cette
étape javascript et puis blocage de la progression.
ma question:
peut on contourner ce pb avec lynx, ou peut on trouver un navigateur
- utilisable en ligne de commande
- capable d'exécuter des scripts comme lynx avec l'option
"-cmd_script=NOMFICHIER"
- supportant le javascript

merci pour vos réponses
Eric

4 réponses

Avatar
Bertrand B
Eric Tréhou a écrit :
bonjour,

je dispose d'un réseau de 2 à 3 postes sous MacOSX, reliés par un
routeur
(http://www.alliedtelesyn.be/fr-be/products/cat/product.asp?cid=6&fid $&pid05&area=support)
à internet. Le pb est que fréquemment, ce routeur "plante" les
entrées/sorties, rendant impossible tout accés distant.Seule soluti on,
le reboot du routeur.
Malheureusement la seule interface avec ce routeur est http sur son por t
80 et l'accés à sa "page de reboot" comporte une "étape" javascri pt
indispensable.
J'aimerais faire un petit script shell, tournant sur une machine du
réseau et capable de rebooter le routeur.
L'utilisation de lynx dans ce script me conduit sans pb jusqu'à cette
étape javascript et puis blocage de la progression.
ma question:
peut on contourner ce pb avec lynx, ou peut on trouver un navigateur
- utilisable en ligne de commande
- capable d'exécuter des scripts comme lynx avec l'option
"-cmd_script=NOMFICHIER"
- supportant le javascript

merci pour vos réponses
Eric



Il existe des langages et outils permettant de piloter des navigateurs
"classiques" mais ayant été confronté à ce genre de situation j'a i
trouvé la solution en regardant ce que faisait le javascript. En géné ral
ça finit toujours par un envoie de formulaire (http get ou post). Dans
quel cas une construction de cette requête fait l'affaire.
Que ce soit en perl et en python (je ne parles que de ce que je connais
il peut y avoir d'autre ressources) il y a tout l'outillage pour créer
ce genre d'automatisation.
Sur d'anciens Linux Mag il y a eu une série d'articles sur les outils
perl d'interrogation de site web. Pour ceux qui ont des archives ....

Autre solution peut être possible (mais attention à la protection
cross-domain) utiliser firefox (en fait un navigateur avec javascript et
xmlhttprequest et fonctionnat dans votre environnement) et écrire un
script js s'appuyant sur xmlhttprequest.
Avatar
Eric Tréhou
Bertrand B a écrit :



Il existe des langages et outils permettant de piloter des navigateurs
"classiques" mais ayant été confronté à ce genre de situation j'ai
trouvé la solution en regardant ce que faisait le javascript. En général
ça finit toujours par un envoie de formulaire (http get ou post). Dans
quel cas une construction de cette requête fait l'affaire.
Que ce soit en perl et en python (je ne parles que de ce que je connais
il peut y avoir d'autre ressources) il y a tout l'outillage pour créer
ce genre d'automatisation.



Ne connaissant pas bien ces langages (et n'étant pas informaticien),
j'ajoute le source de la page en question.Si quelqu'un a un peu de temps
pour me donner une idée de la requête envoyée au routeur.
(j'ai essayé urldurouteur/doReboot.htm --> accés refusé)

Sur d'anciens Linux Mag il y a eu une série d'articles sur les outils
perl d'interrogation de site web. Pour ceux qui ont des archives ....

Autre solution peut être possible (mais attention à la protection
cross-domain) utiliser firefox (en fait un navigateur avec javascript et
xmlhttprequest et fonctionnat dans votre environnement) et écrire un
script js s'appuyant sur xmlhttprequest
.



Je vais déjà voir dans cette voie
merci pour votre réponse
Eric



source de la page :



<html><head><link rel="stylesheet" href="Page.css"><title>System
Config</title><script language="javascript"
src="Utility.js"></script><script language="javascript"><!--

function check(formname)
{if(isBlank(formname.Username)){alert("Username Blank!")
return false
}if(formname.Password.value!=formname.ConfirmPassword.value){alertPassword(formname.Password)
return false
}}

function ResetConfirm(message){answer=confirm("Do you really want to
"+message+"?")
if(answer!=0){if(message=="reset to factory default")
location="doReset.htm"
else{location="doReboot.htm"
setTimeout('Reload()',2000);}}else
return false;}

function
Reload(){parent.basefrm.location.href="products.htm";}//--></script></head><body><form
name="formname" method="post" action="/post-query"><input name="Load"
value="S" type="hidden"><div align="center"><center><p><font
color="blue"><big>Advanced Config / System Config</big></font>
<a href="/Help/Help_SystemConfig.htm"><img src="/Help/Help_Icon.jpg"
alt="Help" border="0"></a></p></center></div><div
align="center"><center><table border="1" width="79%"><tbody><tr><td
nowrap="nowrap" width="53%">

<b>Administrator Login Name</b></td><td nowrap="nowrap"
width="64%"><input name="Username" size="20" maxlength="12" value="root"
onfocus="this.select();" type="text"></td></tr><tr><td nowrap="nowrap"
width="53%">

<b>Administrator Login Password</b></td><td nowrap="nowrap"
width="64%"><input name="Password" size="20" maxlength="12" value="toto"
onfocus="this.select();" type="password"></td></tr><tr><td
nowrap="nowrap" width="53%">

<b>Confirm Password</b></td><td nowrap="nowrap" width="64%"><input
name="ConfirmPassword" maxlength="12" size="20" value="toto"
onfocus="this.select();" type="password"></td></tr><tr><td
nowrap="nowrap" width="53%">

<b>Reset To Factory Default</b></td><td nowrap="nowrap"
width="64%"><input value="Execute" name="ResetToFactory" onclick="return
ResetConfirm('reset to factory default')"
type="submit"></td></tr><tr><td nowrap="nowrap" width="53%">

<b>Reboot The System</b></td><td nowrap="nowrap" width="64%"><input
value="Execute" name="Reboot" onclick="return ResetConfirm('reboot the
system')" type="submit"></td></tr><tr><td colspan="2" nowrap="nowrap"
width="100%"><a href="AS_Upgrade.htm" onclick="return
checkSave();"><b>Upgrade Firmware</b></a></td></tr></tbody></table><p>

<input value="Apply" name="Button" onclick="return check(formname)"
type="submit">&nbsp;&nbsp;&nbsp; <input value="Cancel"
name="Admin_Cancel" type="reset">&nbsp;&nbsp;&nbsp;<input value="Back"
name="Button" onclick="parent.basefrm.location.href='_Advanced.htm'"
type="button"></p></center></div></form></body></html>
Avatar
Prince Hogœrwen'r
Bien le bonjour .)

Ton fichier html fait référence à un autre fichier de script :
Utility.js

Il serait intéressant que tu puisse aussi nous donner son code source.
Cela permettrais d'affiner l'exact envoie des données au serveur.

Merci .p
Avatar
Prince Hogœrwen'r
Rekilikikou .)

En fait, je suis en train de voir pour te créer un petit script en
BASH contenant juste ce qu'il faut pour rebooter ton routeur.

C'est pour cela que j'ai besoin de ce fichier Utility.js pour savoir ce
qu'il s'y passe.
J'espère que ton système avec MacOS X peux éxécuter les script BASH
car cela sera on ne peut plus simple .)

Cordialement votre ...

Prince Hogœrwen'r