Quelques scripts vbs pour la livebox 2 (firmware Soft@Home) Imprimer Envoyer
Écrit par Corrèze   
Jeudi, 09 Juin 2011 12:13

Quelques scripts vbs, prêts à l'emploi, pour automatiser l'accès à l'interface de configuration de la livebox 2 (ZTE ou Sagem en firmware SoftAtHome), du plus simple (ouverture de l'interface) au plus complexe (récupération des paramètres ADSL dans un fichier).

 

Un premier script pour ouvrir l'interface de configuration :

'--------------------------------------------------------
'Ce script ouvre l'interface de la livebox 2

'--------------------------------------------------------

On Error Resume Next

'On lance le navigateur IE
set nav = CreateObject("InternetExplorer.Application")
nav.Visible = true

'On ouvre la page d'identification et on attend qu'elle soit prête
res = nav.navigate("http://livebox/homeAuthentificationRemote.html")
Do While not nav.ReadyState = 4 : wscript.sleep 200 : Loop

'On inscrit les identifiants
nav.document.All.tags("input").Item("Username").Value = "user"
nav.document.All.tags("input").Item("Password").Value = "livebox2"

'On clique
res = nav.document.All.tags("input").Item("bt_save").click

Pour information, on pourra adapter ce script pour se connecter à l'administration à distance (après avoir configurée celle-ci dans l'interface de la livebox) ce qui donnera quelque chose comme :

On Error Resume Next
set nav = CreateObject("InternetExplorer.Application")
nav.Visible = true
nav.navigate https://adresse.dyndns.org:23456
Do While not nav.ReadyState = 4 : wscript.sleep 200 : Loop
Do While Not nav.document.Title = "Livebox" : wscript.sleep 200 : Loop
Do While not nav.ReadyState = 4 : wscript.sleep 200 : Loop
res = nav.navigate("https://adresse.dyndns.org:23456/homeAuthentificationRemote.html")
Do While not nav.ReadyState = 4 : wscript.sleep 200 : Loop
nav.document.All.tags("input").Item("Username").Value = "identifiant"
nav.document.All.tags("input").Item("Password").Value = "mot_de_passe"
res = nav.document.All.tags("input").Item("bt_save").click

Il faut, bien entendu, indiquer dans ce script votre adresse dyndns, le port choisi (entre 10000 et 30000), votre identifiant et votre mot de passe d'administration à distance (qui doit compter au minimum 8 caractères dont un chiffre et un caractère spécial).

 

Un second pour tester le téléphone relié à la livebox :

'-----------------------------------------------------------------------------
'Livebox_2 : Script vbs pour tester le téléphone relié à la livebox
'-----------------------------------------------------------------------------

On Error Resume Next

'Ouverture du navigateur (IE)
set nav = CreateObject("InternetExplorer.Application")
nav.Visible = false 'true pour voir le déroulement

'Ouverture de la page d'identification
nav.navigate "http://livebox/homeAuthentificationRemote.html"
Do While not nav.ReadyState = 4 : wscript.sleep 200 : Loop

'Identification
nav.document.All.tags("input").Item("Username").Value = "user"
nav.document.All.tags("input").Item("Password").Value = "livebox2"
res = nav.document.All.tags("input").Item("bt_save").click

'On attend que la page d'accueil s'ouvre entièrement en testant la présence d'un champ caractéristique
comp = 0
res = ""
do Until (res = "réseau filaire" or res = "wired network" or comp > 20)
comp = comp + 1
res = nav.document.All.tags("div").Item("home-dashboard-wired-label").innertext : wscript.sleep 200
loop

if comp < 20 then
'Ouverture de la page de test
nav.navigate "http://livebox/supportPhoneRingTest.html"
else
msgbox("Problème d'identification")
nav.Quit 'On ferme
end if

'On attend que la page soit ouverte et on vérifie si la VOIP est disponible
comp = 0
res = ""
do Until (res = "disponible" or res = "available" or comp > 20)
comp = comp + 1
res = nav.document.All.tags("span").Item("Services.Phone").innertext : wscript.sleep 200
loop
If comp > 20 then
msgbox ("La VOIP ne semble pas disponible")
else
'On lance le test pour 10 secondes soit 3 sonneries
res = nav.document.All.tags("input").Item("bt_test").click
wscript.sleep 10000
end if

'On ferme !
nav.Quit

 

Un troisième script pour relancer la connexion PPP (changer d'IP WAN) :

'-----------------------------------------------------------------------------
'Livebox_2 : Script vbs pour relancer la connexion PPP de la livebox
'-----------------------------------------------------------------------------

On Error Resume Next

'Ouverture du navigateur (IE)
set nav = CreateObject("InternetExplorer.Application")
nav.Visible = false 'true pour voir le déroulement

'Ouverture de la page d'identification
nav.navigate "http://livebox/homeAuthentificationRemote.html"
Do While not nav.ReadyState = 4 : wscript.sleep 200 : Loop

'Identification
nav.document.All.tags("input").Item("Username").Value = "user"
nav.document.All.tags("input").Item("Password").Value = "livebox2"
res = nav.document.All.tags("input").Item("bt_save").click

'On attend que la page d'accueil s'ouvre entièrement en testant la présence d'un champ caractéristique
res = ""
do Until (res = "réseau filaire" or res = "wired network" or comp > 20)
res = nav.document.All.tags("div").Item("home-dashboard-wired-label").innertext : wscript.sleep 200
loop

if comp < 20 then
'On ouvre la page connexion à internet
nav.navigate "http://livebox/advConfigAccessType.html"
else
msgbox("Problème d'identification")
nav.Quit 'On ferme
end if

'On attend que la page soit ouverte
comp = 0
res = ""
do Until (res = "************" or comp > 20)
comp = comp + 1
res = nav.document.All.tags("input").Item("FirstAccessType.WANPPPConnection.Password").Value : wscript.sleep 200
Loop
If comp > 20 then
msgbox ("Le compte ne semble pas configuré")
else
'On relance la connexion
res = nav.document.All.tags("input").Item("bt_refresh").click
end if

'On ferme !
nav.Quit

'Un beep pour signaler la fin
set ws = Wscript.CreateObject("wscript.Shell") : beep = chr(007) : Ws.Run "cmd /c @echo " & beep,0

 

Et enfin, un script pour récupérer les paramètres ADSL dans un fichier (C:\APEUL.log par défaut) :

'-----------------------------------------------------------------------------
'Livebox_2 : Script vbs pour récupérer périodiquement* les paramètres ADSL
'(* à mettre en oeuvre avec le planificateur de tâches de Windows)
'Les résultats sont inscrits dans un fichier au bout d'environ dix secondes.
'-----------------------------------------------------------------------------

'Ouverture du fichier d'enregistrement C:\APEUL.log
Set fs = CreateObject("Scripting.FileSystemObject")
Set fich_ = fs.OpenTextFile("C:\APEUL.log", 8, True) '8 pour écrire à la fin du fichier

On Error Resume Next

'Ouverture du navigateur (IE)
set nav = CreateObject("InternetExplorer.Application")
nav.Visible = false 'true pour voir le déroulement

'Ouverture de la page d'identification
nav.navigate "http://livebox/homeAuthentificationRemote.html"
Do While not nav.ReadyState = 4 : wscript.sleep 200 : Loop

'Identification
nav.document.All.tags("input").Item("Username").Value = "user"
nav.document.All.tags("input").Item("Password").Value = "livebox2"
res = nav.document.All.tags("input").Item("bt_save").click

'On attend que la page d'accueil s'ouvre entièrement en testant la présence d'un champ caractéristique
comp = 0
res = ""
do Until (res = "réseau filaire" or res = "wired network" or comp > 20)
comp = comp + 1
res = nav.document.All.tags("div").Item("home-dashboard-wired-label").innertext : wscript.sleep 200
loop

if comp < 20 then
'Ouverture de la page Information ADSL
nav.navigate "http://livebox/supportSystemInformationAdsl.html"
else
msgbox("Problème d'identification")
nav.Quit 'On ferme
end if

'On attend que les paramètres ADSL soient chargés en testant le champ "Total.CRCErrors"
comp = 0
CRC = ""
Do until (IsNumeric(CRC) or comp > 60)
comp = comp + 1
CRC = nav.document.All.tags("div").Item("Total.CRCErrors").innertext : wscript.sleep 200
loop

'Capture des paramètres marges de bruit, débits de synchronisation, ...
NMu = " NMus= " & nav.document.All.tags("div").Item("WANDSLInterfaceConfig.UpStreamNoiseMargin").innertext
NMd = " NMds= " & nav.document.All.tags("div").Item("WANDSLInterfaceConfig.DownStreamNoiseMargin").innertext
Syu = " Sync_us= " & nav.document.All.tags("div").Item("WANDSLInterfaceConfig.UpStreamCurrRate").innertext
Syd = " Sync_ds= " & nav.document.All.tags("div").Item("WANDSLInterfaceConfig.DownStreamCurrRate").innertext
tem = nav.document.All.tags("div").Item("WANDSLInterfaceConfig.ShowtimeStart").innertext

'Calcul du taux d'erreur CRC par 24 heures (seuil Orange = 360/24h)
taux = CInt(86400 * CDbl(CRC) / CDbl(Left(tem,len(tem)-2)))

'Enregistrement dans le fichier
fich_.writeline Now & NMu & NMd & Syu & Syd & " Err_CRC= " & CRC & " soit " & taux & "/24h"

'On ferme !
nav.Quit : fich_.close

'Un beep pour signaler la fin
set ws = Wscript.CreateObject("wscript.Shell") : beep = chr(007) : Ws.Run "cmd /c @echo " & beep,0

J'espère que ces quelques exemples commentés vous permettront de réaliser les scripts vbs qui correspondent à vos besoins.

Rappel : Il suffit de copier/coller ces lignes de script dans un document texte (.txt) puis de le renommer avec une extension .vbs
vbs est un langage de script d'usage général utilisable sous Windows. Ces scripts nécessitent de disposer d'Internet Explorer.

Mise à jour le Mercredi, 19 Octobre 2011 18:17