loic69
dimanche 10 avril 2005 à 18:29
Bonjour
Je recherche un outil me permettant d'évaluer le nombre de déconnection de ma ligne adsl (suite à des problèmes sur ma ligne). J'utilise la grenouille mais cette dernière ne permet pas de verifier les deconnections...
Je monte donc au creneau et veux donc les chiffrer exactement (nombres et heures...)
Dans l'idéal, il faudrait un outil qui ping en permanence (toutes les 10 sec) une IP quelconque et qui indique le résultat dans un log... Il faudrait aussi pouvoir remonter l'adresse IP publique du modem.
En fait un script devrait suffire, je ne pense pas qu'il y a besoin d'un soft particulier...
(Je possède un routeur donc pas possibilité d'utiliser ADSL autoconnect...)
Jeumeu
dimanche 10 avril 2005 à 19:11
Moi, j'ai une demande connexe; j'ai un routeur aussi, et j'ai remarqué qu'il m'arrivait de changer d'adresse IP externe (style après 20 jours).
Je veux bien un "truc" qui puisse logger ça.
PS: Je post à la suite car cela me semble très proche de la demande de plcarette.
PS2 : sans vouloir jouer le vieux prof : en français, on écrit connexion (et déconnexion)
mickey19
dimanche 10 avril 2005 à 19:14
Bonsoir,
Sujet déjà abordé, tu (edit : vous

) devrais (devriez) trouver ton (votre) bonheur
ici
Jeumeu
dimanche 10 avril 2005 à 19:39
Effectivement,
Merci mickey19.
Beaucoup de sujets abordés dans ce forum et recherches difficiles sur ce sujet.
mickey19
dimanche 10 avril 2005 à 19:47
Ah je me doute que c'est pas évident, mais vu que j'avais posté dedans, la recherche a été plus simple pour moi

Tiens j'ai vu d'ailleurs que j'ai dû écrire un co***rie : le routeur aurait besoin du démon syslog pour envoyer les infos vers un pc, et non de supporter snmp (j'ai mélangé ce dont j''avais besoin pour mrtg (snmp) et pour wallwatcher (syslog)...

)
loic69
dimanche 10 avril 2005 à 19:49
Oui et Non
Je voudrais me passer de ce petit soft monip ou le soft de script.
Je suis en train d'ecrire un script VBS et je cherche comment obtenir l'IP publique du routeur directement en VBS...
Si quelqu'un à l'info...
Merci
mickey19
dimanche 10 avril 2005 à 20:33
Vrai que c'est pas évident

J'y connais pas grand chose en vbs (j'ai déjà fait mumuse 5 minutes avec, mais juste histoire de savoir un peu ce que c'est, je dois connaitre 3 instructions à tout casser "if then else"

) mais si tu t'y connais un peu, ceci pourra peut être t'aider...
CITATION
Function donneip() As String
donneip = form1.Inet1.OpenURL("http://testip.free.fr/ip.php")
End Function
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
PS : Il faut juste penser à rajouter le composant Inet (Microsoft Internet Transfer Control)
source :
vbfrance.com
omegatron
dimanche 10 avril 2005 à 22:38
Tiens, encore une question existentielle ?
Pourquoi ne pas essayer ceci ?
http://www.bitsoft.se/products.htm#ShowIP
loic69
lundi 11 avril 2005 à 08:43
CITATION
Function donneip() As String
donneip = form1.Inet1.OpenURL("http://testip.free.fr/ip.php")
End Function
Ca doit être du VB et non du script VBS... La form1 me fait penser à ça...
loic69
lundi 11 avril 2005 à 13:22
Voici, un debut de script qui fonctionne. Il est un peu gourmand car il y a une boucle infinie sans tempo... Est il utile de mettre une tempo sachant que le modem se resynchronise vite ? Yahoo ne va peut etre pas être content de se faire pinger en permanence par les mêmes IP... Non ? On peut peut être mettre une tempo à 10 secondes...
Je n'ai pas trop le temps de cherche comment on fait une tempo en VBS... J'essayerai de l'ameliorer... J'ajouterais aussi, l'affichage dans le log de l'IP publique...
Si j'ai trop de galère en VBS, j'écrirais une petite appli en VB.NET ou C#.
Le voici :
CODE
machine1 = "www.yahoo.fr"
machine2 = "www.free.fr"
logfile = "D:\Deconnexion.log"
If machine1 = "" & machine2 = "" Then Return
Set MyFiles = CreateObject("Scripting.FileSystemObject")
If not MyFiles.FileExists(logfile) Then MyFiles.CreateTextFile(logfile)
Set logfile = MyFiles.OpenTextFile(logfile, 8)
Do
set ObjPing1 = GetObject("winmgmts:{impersonationLevel=impersonate}").ExecQuery("select"&" * from win32_PingStatus where address='"&machine1&"'")
For each obj1 in ObjPing1
if obj1.StatusCode <> 0 or IsNull(obj1.StatusCode) then
' la machine n'est pas connecté au réseau, on essaye avec la 2ème machine
Set ObjPing2 = GetObject("winmgmts:{impersonationLevel=impersonate}").ExecQuery("select"&" * from win32_PingStatus where address='"&machine2&"'")
For each obj2 in ObjPing2
If obj2.StatusCode <> 0 or IsNull(obj2.StatusCode) then
' la 2ème machine n'est pas connecté au réseau !!!
'MsgBox "Déconnecté"
logfile.write("Déconnection le " & Date & " à " & Time & chr(13) & chr(10))
End If
Next
End if
Next
Loop
logfile.close
Set logfile = nothing
Set logfiles = nothing
set ObjPing = nothing
loic69
lundi 11 avril 2005 à 15:02
Ca marche plutôt bien...
Il faudrait par contre synthetiser les infos du fichier pour n'indiquer que la déconnexion et non pas tous les pings suivants qui échouent...
Dans le log suivant, j'ai eu en fait 2 déconnexions, une à 14:23 et l'autre à 15h41 !
On voit par contre que le temps de resynchronisation du modem est variable (15 secondes pour la 1ère et 40 secondes pour la seconde...)
CODE
Déconnection le 11/04/2005 à 14:23:46
Déconnection le 11/04/2005 à 14:23:49
Déconnection le 11/04/2005 à 14:23:52
Déconnection le 11/04/2005 à 14:23:55
Déconnection le 11/04/2005 à 14:23:58
Déconnection le 11/04/2005 à 14:24:01
Déconnection le 11/04/2005 à 14:24:04
Déconnection le 11/04/2005 à 14:28:04
Déconnection le 11/04/2005 à 15:05:14
Déconnection le 11/04/2005 à 15:41:46
Déconnection le 11/04/2005 à 15:57:57
Déconnection le 11/04/2005 à 15:58:00
Déconnection le 11/04/2005 à 15:58:03
Déconnection le 11/04/2005 à 15:58:06
Déconnection le 11/04/2005 à 15:58:09
Déconnection le 11/04/2005 à 15:58:12
Déconnection le 11/04/2005 à 15:58:15
Déconnection le 11/04/2005 à 15:58:18
Déconnection le 11/04/2005 à 15:58:21
Déconnection le 11/04/2005 à 15:58:24
Déconnection le 11/04/2005 à 15:58:27
Déconnection le 11/04/2005 à 15:58:30
Déconnection le 11/04/2005 à 15:58:31
Déconnection le 11/04/2005 à 15:58:31
Déconnection le 11/04/2005 à 15:58:31
Déconnection le 11/04/2005 à 15:58:33
Déconnection le 11/04/2005 à 15:58:34
Déconnection le 11/04/2005 à 15:58:34
Déconnection le 11/04/2005 à 15:58:36
Déconnection le 11/04/2005 à 15:58:37
Déconnection le 11/04/2005 à 15:58:37
Déconnection le 11/04/2005 à 15:58:37
Déconnection le 11/04/2005 à 15:58:39
Déconnection le 11/04/2005 à 15:58:40
loic69
lundi 11 avril 2005 à 16:59
Allé, nouvelle version avec la tempo reglable et log d'un evenement seulement à chaque déconnexion...
CODE
' Variable modifiable par l'utilisateur
machine1 = "www.yahoo.fr" ' Nom de la machine 1 à pinguer
machine2 = "www.free.fr" ' Nom de la machine 2 à pinguer (au cas ou la 1 ne repond pas)
logfile = "D:\Deconnexion.log" ' path sur le fichier de log
tempo = 8 ' en secondes
debugmode = false ' permet d'afficher les messagebox de debug
' Variable non modifiable par l'utilisateur
connected = true ' variable utilisée par le script pour ne loguer qu'un évènement à chaque déconnexion
If machine1 = "" & machine2 = "" & logfile = "" Then Return
If debugmode = true Then
ret = MsgBox ("Mode Debug Activé, Confirmez-vous ?", vbYesNo)
If ret = vbNo Then
debugmode = false
End If
End If
Set WshShell = CreateObject("WScript.Shell")
Set MyFiles = CreateObject("Scripting.FileSystemObject")
If not MyFiles.FileExists(logfile) Then MyFiles.CreateTextFile(logfile)
Set logfile = MyFiles.OpenTextFile(logfile, 8)
logfile.write(Chr(13) & chr(10) & "Démarrage du script VBS le " & Date & " à " & Time & chr(13) & chr(10))
Do
set ObjPing1 = GetObject("winmgmts:{impersonationLevel=impersonate}").ExecQuery("select"&" * from win32_PingStatus where address='"&machine1&"'")
For each obj1 in ObjPing1
if obj1.StatusCode <> 0 or IsNull(obj1.StatusCode) then
' la machine n'est pas connecté au réseau, on essaye avec la 2ème machine
Set ObjPing2 = GetObject("winmgmts:{impersonationLevel=impersonate}").ExecQuery("select"&" * from win32_PingStatus where address='"&machine2&"'")
For each obj2 in ObjPing2
If obj2.StatusCode <> 0 or IsNull(obj2.StatusCode) then
' la 2ème machine n'est pas connecté au réseau !!!
'MsgBox "Déconnecté"
If connected = true Then
logfile.write("Déconnection le " & Date & " à " & Time & chr(13) & chr(10))
If debugmode = true Then
MsgBox "Déconnecté Etape 2"
End If
End If
connected = false
Else
connected = true
If debugmode = true Then
MsgBox "Connecté Etape 2"
End If
End If
Next
Else
connected = true
If debugmode = true Then
MsgBox "Connecté Etape 1"
End If
End if
Next
WScript.Sleep(tempo * 1000)
Loop
logfile.close
Set logfile = nothing
Set logfiles = nothing
set ObjPing = nothing
mickey19
lundi 11 avril 2005 à 18:00
Mais où va-t-il chercher tout ça

???
J'avais préféré activer le démon syslog du routeur + wallwatcher sur le pc avec les filtres adéquats, je ne me sentais pas l'âme de faire un programme, et puis ça me semblait plus simple... en tout cas chapeau pour ton script
edreams
lundi 11 avril 2005 à 18:26
chez moi ca marche pas. après compilation le .exe me renvoie des erreurs de "missing string quote"
loic69
lundi 11 avril 2005 à 19:33
CITATION
chez moi ca marche pas. après compilation le .exe me renvoie des erreurs de "missing string quote"
Ou la la...Pas besoin de compilation, c'est un script en Visual Basic !!!
J'ai oublié de préciser que je l'ai testé uniquement sous XP SP2 et qu'il utilise WMI pour pinguer les machines ou les serveurs...
Mode d'emploi :Il suffit de prendre le code, de le copier dans un fichier texte et de le renomer en "deconnexion.vbs" par exemple. Seule l'extension est importante.
Pensez bien à vérifier le path sur le fichier de log dans les premières lignes du script...(Attention si vous n'avez pas de lecteur D !!!)
Aller, voici une mise à jour qui affiche l'IP publique (routeur ou non !) si elle change après chaque déconnexion...
CODE
' Variable modifiable par l'utilisateur
machine1 = "www.yahoo.fr" ' Nom de la machine 1 à pinguer
machine2 = "www.free.fr" ' Nom de la machine 2 à pinguer (au cas ou la 1 ne repond pas)
logfile = "D:\Deconnexion.log" ' path sur le fichier de log
tempo = 5 ' en secondes
debugmode = false ' permet d'afficher les messagebox de debug
' Variable non modifiable par l'utilisateur
connected = true ' variable utilisée par le script pour ne loguer qu'un évènement à chaque déconnexion
IP = "" ' IP publique (du routeur ou de la machine)
If machine1 = "" & machine2 = "" & logfile = "" Then Return
If debugmode = true Then
ret = MsgBox ("Mode Debug Activé, Confirmez-vous ?", vbYesNo)
If ret = vbNo Then
debugmode = false
End If
End If
Set WshShell = CreateObject("WScript.Shell")
Set MyFiles = CreateObject("Scripting.FileSystemObject")
If not MyFiles.FileExists(logfile) Then MyFiles.CreateTextFile(logfile)
Set logfile = MyFiles.OpenTextFile(logfile, 8)
IP = GetIP()
logfile.write(Chr(13) & chr(10) & "Démarrage du script VBS le " & Date & " à " & Time & Chr(13) & chr(10))
logfile.write("IP = " & IP & Chr(13) & chr(10))
Do
set ObjPing1 = GetObject("winmgmts:{impersonationLevel=impersonate}").ExecQuery("select"&" * from win32_PingStatus where address='"&machine1&"'")
For each obj1 in ObjPing1
if obj1.StatusCode <> 0 or IsNull(obj1.StatusCode) then
' la machine n'est pas connecté au réseau, on essaye avec la 2ème machine
Set ObjPing2 = GetObject("winmgmts:{impersonationLevel=impersonate}").ExecQuery("select"&" * from win32_PingStatus where address='"&machine2&"'")
For each obj2 in ObjPing2
If obj2.StatusCode <> 0 or IsNull(obj2.StatusCode) then
' la 2ème machine n'est pas connecté au réseau !!!
'MsgBox "Déconnecté"
If connected = true Then
logfile.write("Déconnection le " & Date & " à " & Time & chr(13) & chr(10))
If debugmode = true Then
MsgBox "Déconnecté Etape 2"
End If
End If
connected = false
Else
' Si on sort d'une déconnexion, on logue l'IP si elle est différente...
If connected = false Then
newIP = GetIP()
If IP <> newIP Then
IP = newIP
logfile.write("IP = " & IP & Chr(13) & chr(10))
End If
End If
connected = true
If debugmode = true Then
MsgBox "Connecté Etape 2"
End If
End If
Next
Else
' Si on sort d'une déconnexion, on logue l'IP si elle est différente...
If connected = false Then
newIP = GetIP()
If IP <> newIP Then
IP = newIP
logfile.write("IP = " & IP & Chr(13) & chr(10))
End If
End If
connected = true
If debugmode = true Then
MsgBox "Connecté Etape 1"
End If
End if
Next
WScript.Sleep(tempo * 1000)
Loop
logfile.close
Set logfile = nothing
Set logfiles = nothing
set ObjPing = nothing
Function GetIP()
On Error Resume Next
Set http = CreateObject("WinHttp.WinHttpRequest.5.1")
On Error Resume Next
If http Is Nothing Then
Set http = CreateObject("WinHttp.WinHttpRequest.5")
End If
http.Open "GET", "http://www.whatismyip.com/", true
WScript.Sleep (1)
http.SetRequestHeader "Cache-Control", "no-cache"
http.Send
If http.WaitForResponse = true Then
If InStr(105, http.ResponseText, "Your IP is ") Then
temp = Mid(http.ResponseText, 112, 30)
index = InStr(temp, " What")
IP = Left(temp, index - 1)
GetIP = IP
End If
End If
End Function
edreams
lundi 11 avril 2005 à 20:05
ahhhh autant pour moi je croyais que c'etais un script AutoIt comme celui qui avait été posté recemment !
merci pour ton travail très utile
loic69
mardi 12 avril 2005 à 10:04
Nouvelle version, avec recherche de l'IP publique regulièerement et affichage seulement si elle est différente...On pourrait encore ajouter la durée de la déconnexion mais bon...
CODE
' Script écrit par plcarette pour www.****.com permettant de loguer dans un fichier les désynchronisations
' de la ligne ADSL. Ce script fonctionne que l'on soit connecté en direct (USB ou Ethernet en PPPoE) ou à
' travers un routeur.
' Principe : Ping de serveursen boucle, si aucun des 2 ne réponds alors on assimile ceci à une déconnexion...
' Seul le premier evenement est logué pour chaque déconnexion de façon à ne pas encombrer le fichier de log
' sinon on aurait une ligne pour chaque ping...
' Renomez ce fichier texte en deconnexion.vbs par exemple puis executez le (sous XP SP2).
' Non testé sous les autres OS.
' Variable modifiable par l'utilisateur
machine1 = "www.yahoo.fr" ' Nom de la machine 1 à pinguer
machine2 = "www.free.fr" ' Nom de la machine 2 à pinguer (au cas ou la 1 ne repond pas)
logfile = "D:\Deconnexion.log" ' path sur le fichier de log
tempo = 5 ' tempo en secondes permettant de ne pas pinguer les machines en permanence
tempoIP = 10 ' coeeficent multiplicateur à la tempo pour la recuperation de l'IP Publique
debugmode = false ' permet d'afficher les messagebox de debug
' Variable non modifiable par l'utilisateur
connected = true ' variable utilisée par le script pour ne loguer qu'un évènement à chaque déconnexion
IP = "" ' IP publique (du routeur ou de la machine)
IndexLoop = 0 ' Index permettant de ne pas recuperer à chaque tempo l'adresse IP publique
If machine1 = "" & machine2 = "" & logfile = "" Then Return
If debugmode = true Then
ret = MsgBox ("Mode Debug Activé, Confirmez-vous ?", vbYesNo)
If ret = vbNo Then
debugmode = false
End If
End If
Set WshShell = CreateObject("WScript.Shell")
Set MyFiles = CreateObject("Scripting.FileSystemObject")
If not MyFiles.FileExists(logfile) Then MyFiles.CreateTextFile(logfile)
Set logfile = MyFiles.OpenTextFile(logfile, 8)
IP = GetIP()
logfile.write(Chr(13) & chr(10) & "Démarrage du script VBS le " & Date & " à " & Time & Chr(13) & chr(10))
logfile.write("IP = " & IP & Chr(13) & chr(10))
Do
set ObjPing1 = GetObject("winmgmts:{impersonationLevel=impersonate}").ExecQuery("select"&" * from win32_PingStatus where address='"&machine1&"'")
For each obj1 in ObjPing1
if obj1.StatusCode <> 0 or IsNull(obj1.StatusCode) then
' la machine n'est pas connecté au réseau, on essaye avec la 2ème machine
Set ObjPing2 = GetObject("winmgmts:{impersonationLevel=impersonate}").ExecQuery("select"&" * from win32_PingStatus where address='"&machine2&"'")
For each obj2 in ObjPing2
If obj2.StatusCode <> 0 or IsNull(obj2.StatusCode) then
' la 2ème machine n'est pas connecté au réseau !!!
'MsgBox "Déconnecté"
If connected = true Then
logfile.write("Déconnection le " & Date & " à " & Time & chr(13) & chr(10))
If debugmode = true Then
MsgBox "Déconnecté Etape 2"
End If
End If
connected = false
Else
' On test l'IP tous les 10 tours de boucles (soit en gros 10 * tempo)
If IndexLoop = tempoIP Then
If debugmode = true Then
MsgBox "GetIP publique Etape 2"
End If
IndexLoop = 0
newIP = GetIP()
If IP <> newIP Then
IP = newIP
logfile.write("IP = " & IP & Chr(13) & chr(10))
End If
End If
connected = true
If debugmode = true Then
MsgBox "Connecté Etape 2"
End If
End If
Next
Else ' La machine 1 répond...
' On test l'IP tous les 10 tours de boucle (soit en gros 10 * tempo)
If IndexLoop = tempoIP Then
If debugmode = true Then
MsgBox "GetIP publique Etape 1"
End If
IndexLoop = 0
newIP = GetIP()
If IP <> newIP Then
IP = newIP
logfile.write("IP = " & IP & Chr(13) & chr(10))
End If
End If
connected = true
If debugmode = true Then
MsgBox "Connecté Etape 1"
End If
End if
Next
WScript.Sleep(tempo * 1000)
IndexLoop = IndexLoop + 1
Loop
logfile.close
Set logfile = nothing
Set logfiles = nothing
set ObjPing = nothing
Function GetIP()
On Error Resume Next
Set http = CreateObject("WinHttp.WinHttpRequest.5.1")
On Error Resume Next
If http Is Nothing Then
Set http = CreateObject("WinHttp.WinHttpRequest.5")
End If
http.Open "GET", "http://www.whatismyip.com/", true
WScript.Sleep (1)
http.SetRequestHeader "Cache-Control", "no-cache"
http.Send
If http.WaitForResponse = true Then
If InStr(105, http.ResponseText, "Your IP is ") Then
temp = Mid(http.ResponseText, 112, 30)
index = InStr(temp, " What")
IP = Left(temp, index - 1)
GetIP = IP
End If
End If
End Function
loic69
mardi 12 avril 2005 à 17:46
Petite refonte du script pour le rendre plus lisible. Ajout de la durée de la déconnection et amelioration des fonctionnalités de debugage du script (debug.log)
CODE
' Script écrit par plcarette pour JustNeuf.com permettant de loguer dans un fichier les désynchronisations
' de la ligne ADSL. Ce script fonctionne que l'on soit connecté en direct (USB ou Ethernet en PPPoE) ou à
' travers un routeur.
' Principe : Ping de serveursen boucle, si aucun des 2 ne réponds alors on assimile ceci à une déconnexion...
' Seul le premier evenement est logué pour chaque déconnexion de façon à ne pas encombrer le fichier de log
' sinon on aurait une ligne pour chaque ping...
' Renomez ce fichier texte en deconnexion.vbs par exemple puis executez le (sous XP SP2).
' Non testé sous les autres OS.
' Variable modifiable par l'utilisateur
machine1 = "www.yahoo.fr" ' Nom de la machine 1 à pinguer
machine2 = "www.free.fr" ' Nom de la machine 2 à pinguer (au cas ou la 1 ne repond pas)
logfile = "D:\Deconnexion.log" ' path sur le fichier de log
debugfile = "D:\Debug.log" ' fichier de debug
tempo = 5 ' tempo en secondes permettant de ne pas pinguer les machines en permanence
tempoIP = 10 ' coeeficent multiplicateur à la tempo pour la recuperation de l'IP Publique
debugmode = false ' permet d'afficher les messagebox de debug
' Variable non modifiable par l'utilisateur
connected = true ' variable utilisée par le script pour ne loguer qu'un évènement à chaque déconnexion
IP = "" ' IP publique (du routeur ou de la machine)
IndexLoop = 0 ' Index permettant de ne pas recuperer à chaque tempo l'adresse IP publique
If machine1 = "" & machine2 = "" & logfile = "" Then Return
Set WshShell = CreateObject("WScript.Shell")
Set MyFiles = CreateObject("Scripting.FileSystemObject")
If debugmode = true Then
ret = MsgBox ("Mode Debug Activé, Confirmez-vous ?", vbYesNo)
If ret = vbNo Then
debugmode = false
Else
If MyFiles.FileExists(debugfile) Then
ret = MsgBox ("Voulez-vous garder l'ancien fichier de debug ?", vbYesNo)
If ret = vbNo Then
MyFiles.DeleteFile(debugfile)
MyFiles.CreateTextFile(debugfile)
End If
Else
MyFiles.CreateTextFile(debugfile)
End If
Set debugfile = MyFiles.OpenTextFile(debugfile, 8)
End If
End If
If not MyFiles.FileExists(logfile) Then MyFiles.CreateTextFile(logfile)
Set logfile = MyFiles.OpenTextFile(logfile, 8)
IP = GetIP()
Print("Démarrage du script VBS")
Print("IP = " & IP)
Do
If Ping(machine1) = false Then
' Ping Failure
DebugPrint("Ping machine 1 Failure")
If ping(machine2) = false Then
' Ping Failure
DebugPrint("Ping machine 2 Failure")
If connected = true Then
StartDeco = Timer
Print("Déconnexion")
End If
connected = false
Else
' Ping Success
DebugPrint "Ping Machine 2 Success"
' Si on était déconnecté, on calcule la durée de déco
If connected = false Then
Print ("Durée de déconnexion : " & Round(Timer - StartDeco, 0) & " secondes")
End If
' On test l'IP tous les 10 tours de boucles (soit en gros 10 * tempo)
If IndexLoop >= tempoIP Then
IndexLoop = 0
DebugPrint "Will enter in GetNewPublicIP() Machine 2"
If GetNewPublicIP() = true Then
Print("IP = " & IP)
End If
End If
End If
Else
' ping Succes
DebugPrint "Ping Machine 1 Success"
' Si on était déconnecté, on calcule la durée de déco
If connected = false Then
Print ("Durée de déconnexion : " & Round(Timer - StartDeco, 0) & " secondes")
End If
' On test l'IP tous les 10 tours de boucle (soit en gros 10 * tempo)
If IndexLoop >= tempoIP Then
IndexLoop = 0
DebugPrint "Will enter in GetNewPublicIP() Machine 1"
If GetNewPublicIP() = true Then
Print("IP = " & IP)
End If
End If
connected = true
End if
WScript.Sleep(tempo * 1000)
IndexLoop = IndexLoop + 1
Loop
logfile.close
Set logfile = nothing
Set logfiles = nothing
set ObjPing = nothing
' Fonction Ping => Ping une machine et retourne le résultat
Function Ping (Machine)
Set ObjPing = GetObject("winmgmts:{impersonationLevel=impersonate}").ExecQuery("select"&" * from win32_PingStatus where address='"&Machine&"'")
For each obj in ObjPing
If obj.StatusCode <> 0 or IsNull(obj.StatusCode) then
' Ping failure
Ping = false
Else
' Ping success
Ping = true
End If
Next
Set ObjPing = nothing
End Function
' Fonction GetIP => Recupere l'IP publique
Function GetIP()
On Error Resume Next
Set http = CreateObject("WinHttp.WinHttpRequest.5.1")
On Error Resume Next
If http Is Nothing Then
Set http = CreateObject("WinHttp.WinHttpRequest.5")
End If
http.Open "GET", "http://www.whatismyip.com/", true
WScript.Sleep (1)
http.SetRequestHeader "Cache-Control", "no-cache"
http.Send
If http.WaitForResponse = true Then
If InStr(105, http.ResponseText, "Your IP is ") Then
temp = Mid(http.ResponseText, 112, 30)
index = InStr(temp, " What")
IP = Left(temp, index - 1)
GetIP = IP
End If
End If
Set http = nothing
End Function
Function GetNewPublicIP()
newIP = GetIP()
Debugprint ("Entering in GetNewPublicIP(), oldIP is " & IP & ", New IP is " & newIP & ".")
If IP <> newIP Then
Debugprint "IPs are different"
IP = newIP
GetNewPublicIP = true
Else
Debugprint "IPs are equal"
GetNewPublicIP = false
End If
End Function
Sub Print(Chaine)
Temp = Date & " " & Time & " --- " & Chaine & Chr(13) & chr(10)
logfile.write Temp
If debugmode = true Then
debugfile.write Temp
End If
End Sub
Sub DebugPrint(Chaine)
Temp = Date & " " & Time & " --- " & Chaine & Chr(13) & chr(10)
If debugmode = true Then
debugfile.write Temp
End If
End Sub
loic69
mardi 12 avril 2005 à 21:21
Aller, la version quasi définitive qui fonctionne nickel chez moi...
Bonne utilisation !
CODE
' Script écrit par plcarette pour JustNeuf.com permettant de loguer dans un fichier les désynchronisations
' de la ligne ADSL. Ce script fonctionne que l'on soit connecté en direct (USB ou Ethernet en PPPoE) ou à
' travers un routeur.
' Principe : Ping d'un serveur web en boucle, si aucun des 2 ne réponds alors on assimile ceci à une déconnexion...
' Seul le premier evenement est logué pour chaque déconnexion de façon à ne pas encombrer le fichier de log
' sinon on aurait une ligne pour chaque ping...
' Renomez ce fichier texte en deconnexion.vbs par exemple puis executez le (sous XP SP2).
' Non testé sous les autres OS.
' Variable modifiable par l'utilisateur
machine1 = "www.yahoo.fr" ' Nom de la machine 1 à pinguer
machine2 = "www.free.fr" ' Nom de la machine 2 à pinguer (au cas ou la 1 ne repond pas)
logfile = "D:\Deconnexion.log" ' path sur le fichier de log
debugfile = "D:\Debug.log" ' fichier de debug
tempo = 5 ' tempo en secondes permettant de ne pas pinguer les machines en permanence
tempoIP = 10 ' coeeficent multiplicateur à la tempo pour la recuperation de l'IP Publique
debugmode = false ' permet d'afficher les messagebox de debug
' Variable non modifiable par l'utilisateur
connected = true ' variable utilisée par le script pour ne loguer qu'un évènement à chaque déconnexion
IP = "" ' IP publique (du routeur ou de la machine)
IndexLoop = 0 ' Index permettant de ne pas recuperer à chaque tempo l'adresse IP publique
If machine1 = "" & machine2 = "" & logfile = "" Then Return
Set WshShell = CreateObject("WScript.Shell")
Set MyFiles = CreateObject("Scripting.FileSystemObject")
If debugmode = true Then
ret = MsgBox ("Mode Debug Activé, Confirmez-vous ?", vbYesNo)
If ret = vbNo Then
debugmode = false
Else
If MyFiles.FileExists(debugfile) Then
ret = MsgBox ("Voulez-vous garder l'ancien fichier de debug ?", vbYesNo)
If ret = vbNo Then
MyFiles.DeleteFile(debugfile)
MyFiles.CreateTextFile(debugfile)
End If
Else
MyFiles.CreateTextFile(debugfile)
End If
Set debugfile = MyFiles.OpenTextFile(debugfile, 8)
End If
End If
If not MyFiles.FileExists(logfile) Then MyFiles.CreateTextFile(logfile)
Set logfile = MyFiles.OpenTextFile(logfile, 8)
IP = GetIP()
Print("Démarrage du script VBS")
Print("IP = " & IP)
Do
If Ping(machine1) = false Then
' Ping Failure
DebugPrint("Ping machine 1 Failure")
If ping(machine2) = false Then
' Ping Failure
DebugPrint("Ping machine 2 Failure")
If connected = true Then
StartDeco = Timer
Print("Déconnexion")
End If
connected = false
Else
' Ping Success
DebugPrint "Ping Machine 2 Success"
' Si on était déconnecté, on calcule la durée de déco
If connected = false Then
Print ("Durée de déconnexion : " & Round(Timer - StartDeco, 0) & " secondes")
If GetNewPublicIP() = true Then
Print("IP = " & IP)
End If
End If
' On test l'IP régulièrement (soit en gros toutes les 10 * tempo secondes)
If IndexLoop >= tempoIP Then
IndexLoop = 0
DebugPrint "Will enter in GetNewPublicIP() Machine 2"
If GetNewPublicIP() = true Then
Print("IP = " & IP)
End If
End If
connected = true
End If
Else
' ping Succes
DebugPrint "Ping Machine 1 Success"
' Si on était déconnecté, on calcule la durée de déco
If connected = false Then
Print ("Durée de déconnexion : " & Round(Timer - StartDeco, 0) & " secondes")
If GetNewPublicIP() = true Then
Print("IP = " & IP)
End If
End If
' On test l'IP régulièrement (soit en gros toutes les 10 * tempo secondes)s
If IndexLoop >= tempoIP Then
IndexLoop = 0
DebugPrint "Will enter in GetNewPublicIP() Machine 1"
If GetNewPublicIP() = true Then
Print("IP = " & IP)
End If
End If
connected = true
End if
WScript.Sleep(tempo * 1000)
IndexLoop = IndexLoop + 1
Loop
logfile.close
Set logfile = nothing
Set logfiles = nothing
set ObjPing = nothing
' Fonction Ping => Ping une machine et retourne le résultat
Function Ping (Machine)
Set ObjPing = GetObject("winmgmts:{impersonationLevel=impersonate}").ExecQuery("select"&" * from win32_PingStatus where address='"&Machine&"'")
For each obj in ObjPing
If obj.StatusCode <> 0 or IsNull(obj.StatusCode) then
' Ping failure
Ping = false
Else
' Ping success
Ping = true
End If
Next
Set ObjPing = nothing
End Function
' Fonction GetIP => Recupere l'IP publique
Function GetIP()
GetIP = ""
On Error Resume Next
Set http = CreateObject("WinHttp.WinHttpRequest.5.1")
On Error Resume Next
If http Is Nothing Then
Set http = CreateObject("WinHttp.WinHttpRequest.5")
End If
http.Open "GET", "http://www.whatismyip.com/", true
WScript.Sleep (1)
http.SetRequestHeader "Cache-Control", "no-cache"
http.Send
If http.WaitForResponse = true Then
If InStr(105, http.ResponseText, "Your IP is ") Then
temp = Mid(http.ResponseText, 112, 30)
index = InStr(temp, " What")
GetIP = Left(temp, index - 1)
End If
End If
Set http = nothing
End Function
Function GetNewPublicIP()
newIP = GetIP()
Debugprint ("Entering in GetNewPublicIP(), oldIP is " & IP & ", New IP is " & newIP & ".")
If IP <> newIP Then
Debugprint "IPs are different"
IP = newIP
GetNewPublicIP = true
Else
Debugprint "IPs are equal"
GetNewPublicIP = false
End If
End Function
Sub Print(Chaine)
Temp = Date & " " & Time & " --- " & Chaine & Chr(13) & chr(10)
logfile.write Temp
If debugmode = true Then
debugfile.write Temp
End If
End Sub
Sub DebugPrint(Chaine)
Temp = Date & " " & Time & " --- " & Chaine & Chr(13) & chr(10)
If debugmode = true Then
debugfile.write Temp
End If
End Sub
Voici le log que ça génère :
CODE
12/04/2005 20:54:25 --- Démarrage du script VBS
12/04/2005 20:54:25 --- IP = 81.185.153.xxx
12/04/2005 21:11:33 --- Déconnexion
12/04/2005 21:11:38 --- Durée de déconnexion : 5 secondes
12/04/2005 21:20:59 --- Déconnexion
12/04/2005 21:21:26 --- Durée de déconnexion : 27 secondes
12/04/2005 21:21:27 --- IP = 81.185.144.xxx
12/04/2005 21:26:50 --- Déconnexion
12/04/2005 21:27:19 --- Durée de déconnexion : 30 secondes
12/04/2005 21:27:20 --- IP = 81.185.152.xxx
12/04/2005 21:44:08 --- Déconnexion
12/04/2005 21:44:13 --- Durée de déconnexion : 5 secondes
Nianettao
mardi 12 avril 2005 à 22:02
Petite question. Tu dis que ça marche en cablé (usb ou ethernet) mais est ce que ça peut marcher avec un réseau wifi (théoriquement oui, vu que tu utilise le protocole tcp/ip) ?
Et il y a t-il possibilité d'avoir un exécutable (avec ta signature dessus bien sur

)
loic69
mardi 12 avril 2005 à 22:26
CITATION
Petite question. Tu dis que ça marche en cablé (usb ou ethernet) mais est ce que ça peut marcher avec un réseau wifi (théoriquement oui, vu que tu utilise le protocole tcp/ip) ?
Et il y a t-il possibilité d'avoir un exécutable (avec ta signature dessus bien sur )
Salut
Ce script fonctionne que tu soit en USB, Ethernet (PPPoe ou routeur), Wifi,... puisque le script est basé sur le ping d'un serveur type www.free.fr. Pour l'obtention de l'IP publique, pas de problème non plus puisque c'est une requète HTTP sur un site qui affiche l'IP...
Donc oui ça devrait marcher pour n'importe quelle conf...Le seul truc c'est que je l'ai testé que sur mes machines qui sont sous XP SP2... Ca devrait fonctionner sous XP, XP SP1. Pour Win 2000, je ne sais pas... Je ferais un test à l'occasion quand j'en aurais l'occasion...
Pour l'exe, non ce n'est pas possible puisque c'est un script VBS qui ne necessite pas une compilation comme un exe VB (VB.NET maintenant !!!).
Si on veut faire un exe, il faudra porter le code mais ça devrait pouvoir se faire facilement en quelques heures...Si c'est de l'exe en VB.NET, ça imposera d'avoir le framework d'installer sur son poste... Le plus simple pour l'utilisateur serait de faire un exe en C/C++ natif...
Je pense que ce script est un bon compromis qui foctionne bien !
a+
mdes
mardi 12 avril 2005 à 22:40
CITATION(Nianettao @ Apr 12 2005, 10:02 PM)
Et il y a t-il possibilité d'avoir un exécutable
Va voir
ici, tout petit et paramétrable
Jeumeu
mardi 12 avril 2005 à 22:48
Les fonctionalités correspondent exactement à ce que je cherchais.
Merci plcarette.
Par contre, j'ai ce message :
loic69
mercredi 13 avril 2005 à 00:21
Tout d'abord, salut le lyonnais !!!!
Etrange, Ligne 1, Caractère 1...
T'est sur que le copier/coller à bien fonctionné...
Le premier caractère doit être un commentaire normalement en VB...
Sinon, je peux te l'envoyer tout pret si tu veux. Donnes moi ton mail en MP.
a+
Jeumeu
mercredi 13 avril 2005 à 01:20
Salut lyonnais,
Just un problème avec wordpad. Il faut sauvegarder sous format texte (l'option par défaut est rtf, d'où l'erreur...)
Maintenant ça a l'air de marcher; j'attends la déconnexion (faut pas exagérer quand même...)
Super boulot plcarette
Ps : je suis pas tech, mais suggestions :
- lancer ce script automatiquement au démarrage de windows...
- afficher une icône dans le systray pour un accès rapide au log
mdes
mercredi 13 avril 2005 à 06:07
CITATION(jeumeu @ Apr 13 2005, 01:20 AM)
Ps : je suis pas tech, mais suggestions :
- lancer ce script automatiquement au démarrage de windows...
- afficher une icône dans le systray pour un accès rapide au log
Pour ça, regarde 4 posts plus haut, ou directement
iciTéléchargement ici sur mon site.
Le fichier LisezMoi.txt donne toutes les explications d'installation (qui est très simple), ainsi que la façon de paramétrer le logiciel en modifiant le fichier ConnectLog.ini.
Et il suffit de mettre un raccourci de ConnectLog.exe dans le menu Démarrage


Et l'icône avec son menu contextuel :

Exemple de fichier Log :
CODE
2005-04-11 10:36:36 : * ---------- Démarrage de S:\ASauver\Sauvegardes\ConnectLog\ConnectLog.exe
2005-04-11 12:16:19 : * Pas d'IP publique
2005-04-11 12:18:03 : * Nouvelle IP Publique = 84.99.33.114
2005-04-11 16:10:20 : * Pas d'IP publique
2005-04-11 16:10:39 : * IP Publique Identique = 84.99.33.114
...
2005-04-12 09:15:55 : * ---------- Démarrage de S:\ASauver\Sauvegardes\ConnectLog\ConnectLog.exe
2005-04-12 09:15:57 : * Nouvelle IP Publique = 84.99.39.128
2005-04-12 11:05:06 : Fin du Programme
2005-04-12 14:02:37 : * ---------- Démarrage de S:\ASauver\Sauvegardes\ConnectLog\ConnectLog.exe
2005-04-12 14:02:46 : * Nouvelle IP Publique = 84.99.37.140
2005-04-12 21:05:59 : * Pas d'IP publique
2005-04-12 21:06:09 : * Nouvelle IP Publique = 84.99.37.34
2005-04-13 09:47:38 : * Pas d'IP publique
2005-04-13 09:47:58 : * Nouvelle IP Publique = 84.99.35.105
loic69
mercredi 13 avril 2005 à 08:20
Exact, j'ai oublié de préciser que c'est du format texte et non rtf ou word...
Le plus simple pour éviter toute erreur est d'utiliser notepad ou un bon vieil editeur de texte comme ultraedit...
CITATION
- lancer ce script automatiquement au démarrage de windows...
- afficher une icône dans le systray pour un accès rapide au log
-Pour lancer le script automatiquement, il suffit de le mettre (ou un raccourci) dans le repertoire C:\Documents and Settings\[Nom du Compte]\Menu Démarrer\Programmes\Démarrage. Attention bien mettre le nom du compte à jour en fonction de ce que vous avez ainsi que la lettre du lecteur (C dans mon cas). Attention, le script démarrera à l'ouverture de windows et non au boot du PC. Ca implique donc une session ouverte par un utilisateur quelconque...(Ce n'est pas un service !!!)
-Pour le systray, bonne idée, je regarde si c'est possible en VBS...
Sinon, tu peux utiliser le soft dont on fait reference dans le post précédent...
Pour voir si ça fonctionne, en attendant une déconnexion, vous pouvez debrancher une vingtaine de seconde, votre cable réseau...
Garfield
mercredi 13 avril 2005 à 08:35
moi je dit que ces deux logiciels meritent un post it non? voir meme ne peut on pas creer une section logiciels utiles en regroupant tcp optimizer (lien), futur logicel de programme tv etc?
bon si c'est une connerie pas taper trop fort merci
loic69
mercredi 13 avril 2005 à 09:08
CITATION
Pour le systray, bonne idée, je regarde si c'est possible en VBS...
Pas possible à priori...puisque c'est pas un process qui tourne...Désolé !
Jeumeu
mercredi 13 avril 2005 à 10:00
omegatron va bien nous faire une cht'it rubrique "les softs utiles" dans la base de connaissance...
loic69
mercredi 13 avril 2005 à 17:03
Plutot pratique...Voila ce que ça donne depuis qu'il est finalisé !
CODE
12/04/2005 20:54:25 --- Démarrage du script VBS
12/04/2005 20:54:25 --- IP = 81.185.153.114
12/04/2005 21:11:33 --- Déconnexion
12/04/2005 21:11:38 --- Durée de déconnexion : 10 secondes
12/04/2005 21:20:59 --- Déconnexion
12/04/2005 21:21:26 --- Durée de déconnexion : 27 secondes
12/04/2005 21:21:27 --- IP = 81.185.144.242
12/04/2005 21:26:50 --- Déconnexion
12/04/2005 21:27:19 --- Durée de déconnexion : 30 secondes
12/04/2005 21:27:20 --- IP = 81.185.152.218
12/04/2005 21:44:08 --- Déconnexion
12/04/2005 21:44:13 --- Durée de déconnexion : 10 secondes
13/04/2005 03:33:22 --- Déconnexion
13/04/2005 03:33:27 --- Durée de déconnexion : 10 secondes
13/04/2005 03:45:30 --- Déconnexion
13/04/2005 04:13:42 --- Durée de déconnexion : 1698 secondes
13/04/2005 08:13:12 --- Déconnexion
13/04/2005 08:14:05 --- Durée de déconnexion : 58 secondes
13/04/2005 08:14:06 --- IP = 81.185.146.174
13/04/2005 11:19:14 --- Déconnexion
13/04/2005 11:19:35 --- Durée de déconnexion : 26 secondes
13/04/2005 13:51:14 --- Déconnexion
13/04/2005 13:51:49 --- Durée de déconnexion : 40 secondes
13/04/2005 13:51:51 --- IP = 81.185.156.xx
13/04/2005 15:34:39 --- Déconnexion
13/04/2005 15:35:01 --- Durée de déconnexion : 26 secondes
mdes
dimanche 17 avril 2005 à 07:34
J'ai mis ma dernière version de l'outil de trace des déconnexions
ConnectLog sur un de mes sites.
Voici le début du fichier
LisezMoi :
CODE
ConnectLog : Log des déconnexions Internet
----------
v1.1.0
Ce tout petit logiciel permet de tracer les déconnexions à votre FAI (Fournisseur d'Accès Internet).
Il affiche une icône dans la barre de notifications (près de l'horloge).
Cette icône a 2 LEDs :
celle du bas (avec un "R" à gauche) indique la connection avec le Routeur (éventuel), et
celle du haut (avec un "I" à gauche), la connexion avec Internet.
Une LED verte indique si la connexion existe, et une rouge si elle n'existe pas.
Les paragraphes suivants décrivent son utilisation et son installation.
-----------
Utilisation :
-----------
Une icône s'affiche dans la barre de notification de Windows (à côté de l'horloge).
Un clic sur cette icône avec le bouton droit de la souris ouvre un menu contextuel qui permet :
==> Afficher le Log
Lance le visualiseur (programme spécifié par "Viewer" dans le fichier de
configuration ConnectLog.ini) qui affichera le fichier Log.
==> Insérer un commentaire
Ouvre une boîte de dialogue. Le texte saisi dans cette boîte sera inséré dans le
fichier Log. Cela permet, par exemple, de mettre un commentaire du type
"Déconnexion suite à appel téléphonique" ou bien "Débranchemet du modem".
Une zone permet d'entrer une date et une heure du commentaire. Ceci donnera
par exemple ""Déconnexion suite à appel téléphonique (10h35)".
Les textes saisis sont mémorisés et affichés dans une liste déroulante modifiable.
==> A Propos...
Donne la version du programme.
==> Sortie
Termine le programme ConnectLog.
Un double-click sur l'icône affiche le fichier Log.
edreams
mercredi 20 avril 2005 à 11:05
voilà mes deconnexions pour ces 2 derniers jours (et encore le 20 c'est aujourd'hui et la journée est loin d'être finie)... c'est édifiant. De plus j'utilise internet pour des usages qui impliquent une fiabilité totale, chaque coupure me pose de gros préjudices. Je crois qu'après 1 mois et demi d'utilisation du 9 je vais être obligé de résillier et retourner chez wanadoo.
Démarrage du script VBS le 18/04/2005 à 17:02:48
IP = 84.98.223.xxx
Déconnection le 18/04/2005 à 21:01:09
Déconnection le 18/04/2005 à 22:35:36
Déconnection le 19/04/2005 à 00:11:12
Déconnection le 19/04/2005 à 00:58:59
Déconnection le 19/04/2005 à 01:36:03
Déconnection le 19/04/2005 à 04:43:45
Déconnection le 19/04/2005 à 09:36:43
Déconnection le 19/04/2005 à 22:03:50
Déconnection le 19/04/2005 à 23:41:06
Déconnection le 20/04/2005 à 00:25:12
Déconnection le 20/04/2005 à 00:50:57
Déconnection le 20/04/2005 à 01:46:07
Déconnection le 20/04/2005 à 02:19:34
Déconnection le 20/04/2005 à 02:52:08
Déconnection le 20/04/2005 à 04:31:36
Déconnection le 20/04/2005 à 05:41:22
Déconnection le 20/04/2005 à 09:31:42
tyaki2001
jeudi 21 avril 2005 à 00:16
En ce qui me concerne, je suis derrière un routeur wifi qui fonctionne parfaitement et cependant j'ai très régulièrement (environ 15 fois par jour) le type de message suivant dans ConnectLog.log:
CODE
2005-04-17 21:00:06 : [4] * Routeur non-atteignable 192.168.1.1
bien que je n'ai aucune déconnection...
Est-ce que ça pourrait s'améliorer afin de ne pas logguer cette info inutile?
Merci.
mdes
jeudi 21 avril 2005 à 08:21
CITATION(tyaki2001 @ Apr 21 2005, 12:16 AM)
En ce qui me concerne, je suis derrière un routeur wifi qui fonctionne parfaitement et cependant j'ai très régulièrement (environ 15 fois par jour) le type de message suivant dans ConnectLog.log:
CODE
2005-04-17 21:00:06 : [4] * Routeur non-atteignable 192.168.1.1
bien que je n'ai aucune déconnection...
Est-ce que ça pourrait s'améliorer afin de ne pas logguer cette info inutile?
Merci.
En attendant, tu peux toujours modifier le fichier
ConnectLog.ini et mettre un ";" devant la ligne "Router=..." comme indiqué dans ce fichier :
CITATION
[Setup]
; Si pas de routeur, commenter la ligne "RouterIP=..." (insérez ";" en début de ligne)
; If no router, comment the line "RouterIP=..." (insert ";" in start of line)
;RouterIP=192.168.9.1
LogFile=D:\ConnectLog.log
TimeOut=10
Language=French
Viewer=D:\Program Files\PSPad\PSPad.exe /9999 "%1"
mdes
jeudi 21 avril 2005 à 10:10
Une nouvelle version est disponible
v1.1.1CITATION
==> v1.1.1 20/04/2005
- Aucune icône n'était affichée lorsque la connexion au routeur était perdue.
- Changement d'un libellé pour aligner les IP.
- Possibilité de tracer ou non les informations dans le fichier Log
(cfr section [Trace] du fichier ConnectLog.ini)
- Possibilité d'afficher ou non les informations dans la barre de notification des tâches
(cfr section [TrayTips] du fichier ConnectLog.ini)
- Ajout du menu de relecture des paramètres.
mdes
samedi 23 avril 2005 à 18:54
Une nouvelle version est disponible
v1.2.0CITATION
- Ajout d'un programme de configuration (EditConfig.exe)
- Ajout d'entrées dans le menu :
- Aller directement sur le site de ConnectLog (http://mdes.tools.free.fr).
- Recharger le fichier de paramètres (ConnectLog.ini).
- Editer le fichier de paramètres (ConnectLog.ini).
- Support des variables d'environnement.
loic69
dimanche 24 avril 2005 à 22:40
Mise à jour de mon script VBS (v1.3) => Correction d'un problème d'affichage
Je rappelle que ce script nécessite l'installation d'aucun logiciel. Il faut juste le copier dans un fichier texte (.txt) à renomer en .vbs et de l'executer. On peut voir si il tourne dans le gestionnaire de tache sous le nom de process "wscript.exe". Il fonctionne sous Windows XP.
CITATION
' Version 1.3
' Script écrit par plcarette pour JustNeuf.com permettant de loguer dans un fichier les désynchronisations
' de la ligne ADSL. Ce script fonctionne que l'on soit connecté en direct (USB ou Ethernet en PPPoE) ou à
' travers un routeur.
' Principe : Ping d'un serveur web en boucle, si aucun des 2 ne réponds alors on assimile ceci à une déconnexion...
' Seul le premier evenement est logué pour chaque déconnexion de façon à ne pas encombrer le fichier de log
' sinon on aurait une ligne pour chaque ping...
' Renomez ce fichier texte en deconnexion.vbs par exemple puis executez le (sous XP SP2).
' Non testé sous les autres OS.
' Variable modifiable par l'utilisateur
machine1 = "www.yahoo.fr" ' Nom de la machine 1 à pinguer
machine2 = "www.free.fr" ' Nom de la machine 2 à pinguer (au cas ou la 1 ne repond pas)
logfile = "D:\Deconnexion.log" ' path sur le fichier de log
debugfile = "D:\Debug.log" ' fichier de debug
tempo = 5 ' tempo en secondes permettant de ne pas pinguer les machines en permanence
tempoIP = 10 ' coeeficent multiplicateur à la tempo pour la recuperation de l'IP Publique
debugmode = false ' permet d'afficher les messagebox de debug
' Variable non modifiable par l'utilisateur
connected = true ' variable utilisée par le script pour ne loguer qu'un évènement à chaque déconnexion
IP = "" ' IP publique (du routeur ou de la machine)
IndexLoop = 0 ' Index permettant de ne pas recuperer à chaque tempo l'adresse IP publique
If machine1 = "" & machine2 = "" & logfile = "" Then Return
Set WshShell = CreateObject("WScript.Shell")
Set MyFiles = CreateObject("Scripting.FileSystemObject")
If debugmode = true Then
ret = MsgBox ("Mode Debug Activé, Confirmez-vous ?", vbYesNo)
If ret = vbNo Then
debugmode = false
Else
If MyFiles.FileExists(debugfile) Then
ret = MsgBox ("Voulez-vous garder l'ancien fichier de debug ?", vbYesNo)
If ret = vbNo Then
MyFiles.DeleteFile(debugfile)
MyFiles.CreateTextFile(debugfile)
End If
Else
MyFiles.CreateTextFile(debugfile)
End If
Set debugfile = MyFiles.OpenTextFile(debugfile, 8)
End If
End If
If not MyFiles.FileExists(logfile) Then MyFiles.CreateTextFile(logfile)
Set logfile = MyFiles.OpenTextFile(logfile, 8)
IP = GetIP()
Print("Démarrage du script VBS")
Print("IP = " & IP)
Do
If Ping(machine1) = false Then
' Ping Failure
DebugPrint("Ping machine 1 Failure")
If ping(machine2) = false Then
' Ping Failure
DebugPrint("Ping machine 2 Failure")
If connected = true Then
StartDeco = Timer
Print("Déconnexion")
End If
connected = false
Else
' Ping Success
DebugPrint "Ping Machine 2 Success"
' Si on était déconnecté, on calcule la durée de déco
If connected = false Then
' On rajoute 5 secondes pour le temps moyen que prennent les 2 pings précédent qui échouent
Print ("Durée de déconnexion : " & Round(Timer - StartDeco, 0) + 5 & " secondes")
If GetNewPublicIP() = true Then
Print("IP = " & IP)
End If
End If
' On test l'IP régulièrement (soit en gros toutes les 10 * tempo secondes)
If IndexLoop >= tempoIP Then
IndexLoop = 0
DebugPrint "Will enter in GetNewPublicIP() Machine 2"
If GetNewPublicIP() = true Then
Print("IP = " & IP)
End If
End If
connected = true
End If
Else
' ping Succes
DebugPrint "Ping Machine 1 Success"
' Si on était déconnecté, on calcule la durée de déco
If connected = false Then
' On rajoute 5 secondes pour le temps moyen que prennent les 2 pings précédent qui échouent
Print ("Durée de déconnexion : " & Round(Timer - StartDeco, 0) + 5 & " secondes")
If GetNewPublicIP() = true Then
Print("IP = " & IP)
End If
End If
' On test l'IP régulièrement (soit en gros toutes les 10 * tempo secondes)s
If IndexLoop >= tempoIP Then
IndexLoop = 0
DebugPrint "Will enter in GetNewPublicIP() Machine 1"
If GetNewPublicIP() = true Then
Print("IP = " & IP)
End If
End If
connected = true
End if
WScript.Sleep(tempo * 1000)
IndexLoop = IndexLoop + 1
Loop
logfile.close
Set logfile = nothing
Set logfiles = nothing
set ObjPing = nothing
' Fonction Ping => Ping une machine et retourne le résultat
Function Ping (Machine)
Set ObjPing = GetObject("winmgmts:{impersonationLevel=impersonate}").ExecQuery("select"&" * from win32_PingStatus where address='"&Machine&"'")
For each obj in ObjPing
If obj.StatusCode <> 0 or IsNull(obj.StatusCode) then
' Ping failure
Ping = false
Else
' Ping success
Ping = true
End If
Next
Set ObjPing = nothing
End Function
' Fonction GetIP => Recupere l'IP publique
Function GetIP()
GetIP = ""
On Error Resume Next
Set http = CreateObject("WinHttp.WinHttpRequest.5.1")
On Error Resume Next
If http Is Nothing Then
Set http = CreateObject("WinHttp.WinHttpRequest.5")
End If
http.Open "GET", "http://www.whatismyip.com/", true
WScript.Sleep (1)
http.SetRequestHeader "Cache-Control", "no-cache"
http.Send
If http.WaitForResponse = true Then
If InStr(105, http.ResponseText, "Your IP is ") Then
temp = Mid(http.ResponseText, 112, 30)
index = InStr(temp, " What")
GetIP = Left(temp, index - 1)
End If
End If
Set http = nothing
End Function
Function GetNewPublicIP()
newIP = GetIP()
Debugprint ("Entering in GetNewPublicIP(), oldIP is " & IP & ", New IP is " & newIP & ".")
If newIP = "" Then
Debugprint "IP is null"
GetNewPublicIP = false
Return
ElseIf IP <> newIP Then
Debugprint "IPs are different"
IP = newIP
GetNewPublicIP = true
Else
Debugprint "IPs are equal"
GetNewPublicIP = false
End If
End Function
Sub Print(Chaine)
Temp = Date & " " & Time & " --- " & Chaine & Chr(13) & chr(10)
logfile.write Temp
If debugmode = true Then
debugfile.write Temp
End If
End Sub
Sub DebugPrint(Chaine)
Temp = Date & " " & Time & " --- " & Chaine & Chr(13) & chr(10)
If debugmode = true Then
debugfile.write Temp
End If
End Sub
edreams
mardi 26 avril 2005 à 13:17
merci bcp !
loic69
mercredi 27 avril 2005 à 20:58
Petite correction mineur...V1.4
CODE
' Version 1.4
' Script écrit par plcarette pour JustNeuf.com permettant de loguer dans un fichier les désynchronisations
' de la ligne ADSL. Ce script fonctionne que l'on soit connecté en direct (USB ou Ethernet en PPPoE) ou à
' travers un routeur.
' Principe : Ping d'un serveur web en boucle, si aucun des 2 ne réponds alors on assimile ceci à une déconnexion...
' Seul le premier evenement est logué pour chaque déconnexion de façon à ne pas encombrer le fichier de log
' sinon on aurait une ligne pour chaque ping...
' Renomez ce fichier texte en deconnexion.vbs par exemple puis executez le (sous XP SP2).
' Non testé sous les autres OS.
' Variable modifiable par l'utilisateur
machine1 = "www.yahoo.fr" ' Nom de la machine 1 à pinguer
machine2 = "www.free.fr" ' Nom de la machine 2 à pinguer (au cas ou la 1 ne repond pas)
logfile = "D:\Deconnexion.log" ' path sur le fichier de log
debugfile = "D:\Debug.log" ' fichier de debug
tempo = 5 ' tempo en secondes permettant de ne pas pinguer les machines en permanence
tempoIP = 10 ' coeeficent multiplicateur à la tempo pour la recuperation de l'IP Publique
debugmode = false ' permet d'afficher les messagebox de debug
' Variable non modifiable par l'utilisateur
connected = true ' variable utilisée par le script pour ne loguer qu'un évènement à chaque déconnexion
IP = "" ' IP publique (du routeur ou de la machine)
IndexLoop = 0 ' Index permettant de ne pas recuperer à chaque tempo l'adresse IP publique
If machine1 = "" & machine2 = "" & logfile = "" Then Return
Set WshShell = CreateObject("WScript.Shell")
Set MyFiles = CreateObject("Scripting.FileSystemObject")
If debugmode = true Then
ret = MsgBox ("Mode Debug Activé, Confirmez-vous ?", vbYesNo)
If ret = vbNo Then
debugmode = false
Else
If MyFiles.FileExists(debugfile) Then
ret = MsgBox ("Voulez-vous garder l'ancien fichier de debug ?", vbYesNo)
If ret = vbNo Then
MyFiles.DeleteFile(debugfile)
MyFiles.CreateTextFile(debugfile)
End If
Else
MyFiles.CreateTextFile(debugfile)
End If
Set debugfile = MyFiles.OpenTextFile(debugfile, 8)
End If
End If
If not MyFiles.FileExists(logfile) Then MyFiles.CreateTextFile(logfile)
Set logfile = MyFiles.OpenTextFile(logfile, 8)
IP = GetIP()
Print("Démarrage du script VBS")
Print("IP = " & IP)
Do
If Ping(machine1) = false Then
' Ping Failure
DebugPrint("Ping machine 1 Failure")
If ping(machine2) = false Then
' Ping Failure
DebugPrint("Ping machine 2 Failure")
If connected = true Then
StartDeco = Timer
Print("Déconnexion")
End If
connected = false
Else
' Ping Success
DebugPrint "Ping Machine 2 Success"
' Si on était déconnecté, on calcule la durée de déco
If connected = false Then
' On rajoute 5 secondes pour le temps moyen que prennent les 2 pings précédent qui échouent
Print ("Durée de déconnexion : " & Round(Timer - StartDeco, 0) + 5 & " secondes")
If GetNewPublicIP() = true Then
Print("IP = " & IP)
End If
End If
' On test l'IP régulièrement (soit en gros toutes les 10 * tempo secondes)
If IndexLoop >= tempoIP Then
IndexLoop = 0
DebugPrint "Will enter in GetNewPublicIP() Machine 2"
If GetNewPublicIP() = true Then
Print("IP = " & IP)
End If
End If
connected = true
End If
Else
' ping Succes
DebugPrint "Ping Machine 1 Success"
' Si on était déconnecté, on calcule la durée de déco
If connected = false Then
' On rajoute 5 secondes pour le temps moyen que prennent les 2 pings précédent qui échouent
Print ("Durée de déconnexion : " & Round(Timer - StartDeco, 0) + 5 & " secondes")
If GetNewPublicIP() = true Then
Print("IP = " & IP)
End If
End If
' On test l'IP régulièrement (soit en gros toutes les 10 * tempo secondes)s
If IndexLoop >= tempoIP Then
IndexLoop = 0
DebugPrint "Will enter in GetNewPublicIP() Machine 1"
If GetNewPublicIP() = true Then
Print("IP = " & IP)
End If
End If
connected = true
End if
WScript.Sleep(tempo * 1000)
IndexLoop = IndexLoop + 1
Loop
logfile.close
Set logfile = nothing
Set logfiles = nothing
set ObjPing = nothing
' Fonction Ping => Ping une machine et retourne le résultat
Function Ping (Machine)
Set ObjPing = GetObject("winmgmts:{impersonationLevel=impersonate}").ExecQuery("select"&" * from win32_PingStatus where address='"&Machine&"'")
For each obj in ObjPing
If obj.StatusCode <> 0 or IsNull(obj.StatusCode) then
' Ping failure
Ping = false
Else
' Ping success
Ping = true
End If
Next
Set ObjPing = nothing
End Function
' Fonction GetIP => Recupere l'IP publique
Function GetIP()
GetIP = ""
On Error Resume Next
Set http = CreateObject("WinHttp.WinHttpRequest.5.1")
On Error Resume Next
If http Is Nothing Then
Set http = CreateObject("WinHttp.WinHttpRequest.5")
End If
http.Open "GET", "http://www.whatismyip.com/", true
WScript.Sleep (1)
http.SetRequestHeader "Cache-Control", "no-cache"
http.Send
If http.WaitForResponse = true Then
If InStr(105, http.ResponseText, "Your IP is ") Then
temp = Mid(http.ResponseText, 112, 30)
index = InStr(temp, " What")
GetIP = Left(temp, index - 1)
End If
End If
Set http = nothing
End Function
Function GetNewPublicIP()
newIP = GetIP()
Debugprint ("Entering in GetNewPublicIP(), oldIP is " & IP & ", New IP is " & newIP & ".")
If newIP = "" Then
Debugprint "IP is null"
GetNewPublicIP = false
ElseIf IP <> newIP Then
Debugprint "IPs are different"
IP = newIP
GetNewPublicIP = true
Else
Debugprint "IPs are equal"
GetNewPublicIP = false
End If
End Function
Sub Print(Chaine)
Temp = Date & " " & Time & " --- " & Chaine & Chr(13) & chr(10)
logfile.write Temp
If debugmode = true Then
debugfile.write Temp
End If
End Sub
Sub DebugPrint(Chaine)
Temp = Date & " " & Time & " --- " & Chaine & Chr(13) & chr(10)
If debugmode = true Then
debugfile.write Temp
End If
End Sub
Nono
mercredi 27 avril 2005 à 21:03
Merci pour ce petit script qui fonctionne bien chez moi
Je vais pourvoir vérifier la stabilité de l'ADSL chez moi avant mon départ en DT chez Free (pour des raisons commerciales uniquement je tiens à le préciser).
mdes
samedi 30 avril 2005 à 14:19
Une nouvelle version est disponible
v1.2.2CITATION
==> v1.2.2 30/04/2005
- Suppression des fichiers temporaires créés par la recherche d'IP.
- Correction de la recherche automatique de l'IP du routeur.
- Prise en compte de multiples passerelles.
- Ajout de commentaires avec date/heure pour insertion au bon endroit dans le fichier Log.
- Affichage d'un "P" dans l'icône pendant le "ping" d'Internet.
- Définition du double-clic sur l'icône : "Afficher le fichier Log" ou "Saisir un commentaire"
Example de fichier Log :
CODE
2005-04-29 10:47:13 : [0] ---------- Démarrage de ConnectLog.Test.exe (v1.2.2 ß1) Routeur = 192.168.9.1
2005-04-29 10:47:14 : [2] Même IP Publique = 84.99.34.30
2005-04-29 14:02:00 : [5] ==> Sortie du mode Veille <==
2005-04-29 14:04:14 : [4] Routeur non-atteignable
2005-04-29 14:06:25 : [3] Nouvelle IP Publique = 84.99.31.51
2005-04-29 14:07:28 : [3] Nouvelle IP Publique = 84.99.35.183
2005-04-29 14:11:26 : [1] Pas d'IP publique
2005-04-29 14:11:26 : [5] ==> Reset Modem <==
2005-04-29 14:11:37 : [3] Nouvelle IP Publique = 84.99.39.249
2005-04-29 14:18:45 : [1] Pas d'IP publique
2005-04-29 14:20:42 : [3] Nouvelle IP Publique = 84.99.31.151
2005-04-29 15:04:30 : [9] Fin du Programme
2005-04-29 15:09:19 : [0] ---------- Démarrage de ConnectLog.exe (v1.2.2) Routeur = 192.168.9.1
2005-04-29 15:09:20 : [2] Même IP Publique = 84.99.31.151
2005-04-29 17:26:54 : [3] Nouvelle IP Publique = 84.99.33.177
2005-04-30 00:16:05 : [3] Nouvelle IP Publique = 84.99.39.216
loic69
mardi 03 mai 2005 à 12:52
Evolution vers Version 1.5 suite au changement sur le site whatismyip
CODE
' Version 1.5
' Script écrit par plcarette pour JustNeuf.com permettant de loguer dans un fichier les désynchronisations
' de la ligne ADSL. Ce script fonctionne que l'on soit connecté en direct (USB ou Ethernet en PPPoE) ou à
' travers un routeur.
' Principe : Ping d'un serveur web en boucle, si aucun des 2 ne réponds alors on assimile ceci à une déconnexion...
' Seul le premier evenement est logué pour chaque déconnexion de façon à ne pas encombrer le fichier de log
' sinon on aurait une ligne pour chaque ping...
' Renomez ce fichier texte en deconnexion.vbs par exemple puis executez le (sous XP SP2).
' Non testé sous les autres OS.
' Historique :
' 1.1 Creation du script
' 1.2 Supression du log permanent dans le fichier evitant la surchgarge
' 1.3 Ajout de fonction de debug
' 1.4 Correction bug affichant une IP vide
' 1.5 Modif de la fonction GetIP suite au changemet du site www.whatismyip.com
' Variable modifiable par l'utilisateur
machine1 = "www.yahoo.fr" ' Nom de la machine 1 à pinguer
machine2 = "www.free.fr" ' Nom de la machine 2 à pinguer (au cas ou la 1 ne repond pas)
logfile = "D:\Deconnexion.log" ' path sur le fichier de log
debugfile = "D:\Debug.log" ' fichier de debug
tempo = 5 ' tempo en secondes permettant de ne pas pinguer les machines en permanence
tempoIP = 10 ' coeeficent multiplicateur à la tempo pour la recuperation de l'IP Publique
debugmode = false ' permet d'afficher les messagebox de debug
' Variable non modifiable par l'utilisateur
connected = true ' variable utilisée par le script pour ne loguer qu'un évènement à chaque déconnexion
IP = "" ' IP publique (du routeur ou de la machine)
IndexLoop = 0 ' Index permettant de ne pas recuperer à chaque tempo l'adresse IP publique
If machine1 = "" & machine2 = "" & logfile = "" Then Return
Set WshShell = CreateObject("WScript.Shell")
Set MyFiles = CreateObject("Scripting.FileSystemObject")
If debugmode = true Then
ret = MsgBox ("Mode Debug Activé, Confirmez-vous ?", vbYesNo)
If ret = vbNo Then
debugmode = false
Else
If MyFiles.FileExists(debugfile) Then
ret = MsgBox ("Voulez-vous garder l'ancien fichier de debug ?", vbYesNo)
If ret = vbNo Then
MyFiles.DeleteFile(debugfile)
MyFiles.CreateTextFile(debugfile)
End If
Else
MyFiles.CreateTextFile(debugfile)
End If
Set debugfile = MyFiles.OpenTextFile(debugfile, 8)
End If
End If
If not MyFiles.FileExists(logfile) Then MyFiles.CreateTextFile(logfile)
Set logfile = MyFiles.OpenTextFile(logfile, 8)
IP = GetIP()
Print("Démarrage du script VBS")
Print("IP = " & IP)
Do
If Ping(machine1) = false Then
' Ping Failure
DebugPrint("Ping machine 1 Failure")
If ping(machine2) = false Then
' Ping Failure
DebugPrint("Ping machine 2 Failure")
If connected = true Then
StartDeco = Timer
Print("Déconnexion")
End If
connected = false
Else
' Ping Success
DebugPrint "Ping Machine 2 Success"
' Si on était déconnecté, on calcule la durée de déco
If connected = false Then
' On rajoute 5 secondes pour le temps moyen que prennent les 2 pings précédent qui échouent
Print ("Durée de déconnexion : " & Round(Timer - StartDeco, 0) + 5 & " secondes")
If GetNewPublicIP() = true Then
Print("IP = " & IP)
End If
End If
' On test l'IP régulièrement (soit en gros toutes les 10 * tempo secondes)
If IndexLoop >= tempoIP Then
IndexLoop = 0
DebugPrint "Will enter in GetNewPublicIP() Machine 2"
If GetNewPublicIP() = true Then
Print("IP = " & IP)
End If
End If
connected = true
End If
Else
' ping Succes
DebugPrint "Ping Machine 1 Success"
' Si on était déconnecté, on calcule la durée de déco
If connected = false Then
' On rajoute 5 secondes pour le temps moyen que prennent les 2 pings précédent qui échouent
Print ("Durée de déconnexion : " & Round(Timer - StartDeco, 0) + 5 & " secondes")
If GetNewPublicIP() = true Then
Print("IP = " & IP)
End If
End If
' On test l'IP régulièrement (soit en gros toutes les 10 * tempo secondes)s
If IndexLoop >= tempoIP Then
IndexLoop = 0
DebugPrint "Will enter in GetNewPublicIP() Machine 1"
If GetNewPublicIP() = true Then
Print("IP = " & IP)
End If
End If
connected = true
End if
WScript.Sleep(tempo * 1000)
IndexLoop = IndexLoop + 1
Loop
logfile.close
Set logfile = nothing
Set logfiles = nothing
set ObjPing = nothing
' Fonction Ping => Ping une machine et retourne le résultat
Function Ping (Machine)
Set ObjPing = GetObject("winmgmts:{impersonationLevel=impersonate}").ExecQuery("select"&" * from win32_PingStatus where address='"&Machine&"'")
For each obj in ObjPing
If obj.StatusCode <> 0 or IsNull(obj.StatusCode) then
' Ping failure
Ping = false
Else
' Ping success
Ping = true
End If
Next
Set ObjPing = nothing
End Function
' Fonction GetIP => Recupere l'IP publique
Function GetIP()
GetIP = ""
On Error Resume Next
Set http = CreateObject("WinHttp.WinHttpRequest.5.1")
On Error Resume Next
If http Is Nothing Then
Set http = CreateObject("WinHttp.WinHttpRequest.5")
End If
http.Open "GET", "http://www.whatismyip.com/", true
WScript.Sleep (1)
http.SetRequestHeader "Cache-Control", "no-cache"
http.Send
If http.WaitForResponse = true Then
If InStr(101, http.ResponseText, "Your IP Is ") Then
temp = Mid(http.ResponseText, 112, 30)
index = InStr(temp, " What")
GetIP = Left(temp, index - 1)
End If
End If
Set http = nothing
End Function
Function GetNewPublicIP()
newIP = GetIP()
Debugprint ("Entering in GetNewPublicIP(), oldIP is " & IP & ", New IP is " & newIP & ".")
If newIP = "" Then
Debugprint "IP is null"
GetNewPublicIP = false
ElseIf IP <> newIP Then
Debugprint "IPs are different"
IP = newIP
GetNewPublicIP = true
Else
Debugprint "IPs are equal"
GetNewPublicIP = false
End If
End Function
Sub Print(Chaine)
Temp = Date & " " & Time & " --- " & Chaine & Chr(13) & chr(10)
logfile.write Temp
If debugmode = true Then
debugfile.write Temp
End If
End Sub
Sub DebugPrint(Chaine)
Temp = Date & " " & Time & " --- " & Chaine & Chr(13) & chr(10)
If debugmode = true Then
debugfile.write Temp
End If
End Sub
morais
mercredi 24 août 2005 à 15:47
Bonjour,
depuis quelque temps le script ne recupère plus l'adresse IP sur le log

il me signale bien les deconexions.
Merci pour ce script.
Jeumeu
mercredi 24 août 2005 à 15:51
idem chez moi.
Loic69, si tu es dans les parages...
Thierry.34
mercredi 24 août 2005 à 18:14
Les canailloux de whatismayip alternent "You IP Is xxx" et "Your IP - xxx"
Je vous propose donc de remplacer les lignes suivantes :
If http.WaitForResponse = true Then
If InStr(105, http.ResponseText, "Your IP is ") Then
temp = Mid(http.ResponseText, 112, 30)
index = InStr(temp, " What")
GetIP = Left(temp, index - 1)
End If
End If
par :
If http.WaitForResponse = true Then
If InStr(105, http.ResponseText, "Your IP ") Then
myArray = Split(Mid(http.ResponseText, InStr(105, http.ResponseText, "Your IP "), 30))
GetIP = myArray(4)
End If
End If
Jeumeu
mercredi 24 août 2005 à 19:19
Merci Thierry.34,
Je viens d'appliquer ta modif sur la v1.4 et c'est ok.
(ne connaissant rien à ce language, je n'ai pas osé l'appliquer à la 1.5...)
morais
jeudi 25 août 2005 à 17:23
Merci Thierry.34, c'est bon maintenant
morais
lundi 06 février 2006 à 09:53
Thierry.34,
c'est à nouveau moi, je ne recupère plus l'adresse IP depuis 2/3 jours.
si tu pouvais jeter un oeil

merci d'avance.
Ceci est une version "bas débit" de Justneuf. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez
cliquer ici.