[Débutant]Essai de connection à une serveur web

cs_fcolo Messages postés 201 Date d'inscription mercredi 8 février 2006 Statut Membre Dernière intervention 20 février 2007 - 10 juil. 2006 à 10:36
cs_fcolo Messages postés 201 Date d'inscription mercredi 8 février 2006 Statut Membre Dernière intervention 20 février 2007 - 10 juil. 2006 à 11:33
Bonjour,

Je viens du monde du C# et on me demande de réaliser un script (.vbs ou .bat ou .wss) pour rebooter une caméra IP.
Après analyse du code html derrière le bouton "Restart", il s'avère qu'il suffit juste d'aller sur la page:
"http://user:pass@IP:port/axis-cgi/admin/restart.cgi"
pour que la caméra redémarre.

On me demande également un paramètrage facile du script (ouverture par un editeur de texte et replacement des valeurs de l'IP/port et  de l'user/pass).

Ensuite, grace au planificateur de taches de windows, le script ce lancera automatiquement.

Une idée été d'ouvrir dans le planificateur internet explorer avec en paramètre l'url de la page. Mais, le script tournera sur un serveur sur lequel il n'y aura pas continuellement une personne dessus. De ce fait, il ne faut pas qu'il y ai une page internet explorer ouverte à chaque redémarrage de la page sinon ce ne sera plus gérable sur le serveur.

J'ai regardé sur le net et je suis tombé sur cette PAGE. La personne s'envois à partir d'un fichier .vbs un mail.

J'ai essayé de le modifier pour qu'au lieu d'envoyer un mail, il envois les données d'ouverture de la page au serveur web de la caméra.

Voici le code que j'ai actuellement:

-----------------------------------------------------------------
'Script pour rebooter une caméra ou un serveur Axis

'Constante de script
Const S_REMOTE_HOST = "192.168.200.232"
Const S_REMOTE_PORT = "80"
Const url = "/axis-cgi/admin/restart.cgi"
Const MSWS = "mswinsock.winsock"

'lancement de la procédure de redémarrage
restart

Sub restart
    'Objet socket
    Dim oSck

    'Création de l'objet socket
    Set oSck = CreateObject(MSWS) //<--- l'erreur ce produit à cette ligne
                                                          // "Un composant ActiveX ne peut pas créer un objet.: 'mswinsock.winsock'"
    'Initialisation des paramètres de connexion
    oSck.RemoteHost = S_REMOTE_HOST
    oSck.RemotePort = S_REMOTE_PORT

    'Connexion au serveur ou à la caméra
    oSck.Connect
   
    oSck.SendData("GET " & url & "HTTP:/1.1")
   
End Sub

-----------------------------------------------------------------

Mais le "Windows Script Host" de windows lève une erreur stipulant:
"Un composant ActiveX ne peut pas créer un objet.: 'mswinsock.winsock'"

Je ne connais vraiment rien en VBScript et je ne sais pas comment régler ce problème.

Quelqu'un serait m'aider?

f.colo
   

4 réponses

Ulala2 Messages postés 86 Date d'inscription lundi 27 janvier 2003 Statut Membre Dernière intervention 10 décembre 2006
10 juil. 2006 à 11:09
Bonjour,

Vérifie que tu as bien le fichier
c:\windows\system32\mswinsck.ocx

Si tu l'as, tu peux essayer de réenregistrer l'ocx en tapant sous dos :
regsvr32 C:\WINDOWS\system32\mswinsck.ocx
0
cs_fcolo Messages postés 201 Date d'inscription mercredi 8 février 2006 Statut Membre Dernière intervention 20 février 2007 2
10 juil. 2006 à 11:12
Non, je n'ai pas cet ActiveX sur mon pc de programmation.
Comment faut-il faire pour obtenir cet ocx?
Est ce que ca marcherait sur tout type de machine?
Connaissez vous un autre moyen de réaliser mon projet?

f.colo
0
Ulala2 Messages postés 86 Date d'inscription lundi 27 janvier 2003 Statut Membre Dernière intervention 10 décembre 2006
10 juil. 2006 à 11:19
Bonjour,

c'est pour ca que tu as des soucis.

Télécharge le ici par exemple :
http://www.ascentive.com/support/new/images/lib/MSWINSCK.OCX

copie le dans c:\windows\system32 ou c:\winnt\system32 en fonction de ton OS.

Puis il te faut l'enregistrer dans la base de registre via la commande regsvr32.exe qui est dans system32 aussi (voir ci-dessus).

Si tu veux un coup de main pour ton projet, c'est avec plaisir. Donne moi ton adresse email.
0
cs_fcolo Messages postés 201 Date d'inscription mercredi 8 février 2006 Statut Membre Dernière intervention 20 février 2007 2
10 juil. 2006 à 11:33
Maintenant que j'ai récupèré l'ocx, il ne fait plus de message d'erreur mais ne fais pas ce que je lui demande :).

Voici le code complet:
-------------------------
'Script rebooter une caméra ou un serveur Axis

'Constante de script
Const S_REMOTE_HOST = "192.168.200.232"
Const S_REMOTE_PORT = "80"
Const url = "/axis-cgi/admin/restart.cgi"
Const MSWS = "mswinsock.winsock"

'lancement de la procédure de redémarrage
restart

Sub restart
    'Objet socket
    Dim oSck

    'Compteur
    Dim i

    'Création de l'objet socket
    Set oSck = CreateObject(MSWS)

    'Initialisation des paramètres de connexion
    oSck.RemoteHost = S_REMOTE_HOST
    oSck.RemotePort = S_REMOTE_PORT

    'Connexion au serveur ou à la caméra
    oSck.Connect
    
    'Attente de réponse du serveur ou à la caméra
    VAR_1 = oSck.State
    While(oSck.State <> 7 And i < 1000)
        WScript.Sleep 10
        i=i+1
    Wend
    'Si la connexion est KO
    If i >= 1000 Then
        'Affichage d'un message d'erreur dans le fichier de logs
        'write_log "Connection time out (State = " & oSck.State & "/" & VAR_1 & ")."
    'Sinon
    Else
        oSck.SendData("GET " & url & "HTTP:/1.1")
    End If
    
    'Fermeture de la socket
    oSck.Close

    'Libération de la mémoire
    Set oSck = Nothing
End Sub
    
-------------------------

Je pense qu'il sort à cause du time out ou autre car je ne précise pas le nom du'ilisateur et le mot de passe pour passer le htaccess. En C# on utilise un 'credential' mais ici je ne sais pas du tout.
Je vais regarder aussi l'equivalent des MessageBox.show() pour débugger :).
Existe -t-il des outils pour programmer en vbs genre visual studio avec des aides intuitives?

f.colo
0
Rejoignez-nous