Temporisation sur script vbs "gelé"

Signaler
Messages postés
5
Date d'inscription
samedi 26 juillet 2003
Statut
Membre
Dernière intervention
15 janvier 2007
-
Messages postés
5
Date d'inscription
samedi 26 juillet 2003
Statut
Membre
Dernière intervention
15 janvier 2007
-
Bonjour,

Dans un script destiné à être lancé à distance sur plusieurs machines pour compter leur nombre de sessions, j'ai un resultat correct sauf quand je tombe sur un serveur "bagottant".
Si le serveur est en ligne tout va bien. S'il est hors ligne, un test de ping me dit de ne pas m'attarder sur le sujet mais si le serveur est dans un état instable (reponse au ping mais impossible de toucher le serveur à distance), la requete reste en suspens sans remonter de code d'erreur.

Quelqu'un connait-il une méthode afin de définir au script d'attendre la réponse du serveur distant pendant X secondes puis de continuer?

Je met ci dessous la partie de code concernée.
Ce code est dans une boucle déterminée par une liste de serveurs. La remontée est effective mais si un serveur est "freezé", la ligne NbSessions =... ne s'éxécute pas mais le code d'erreur reste à 0 donc le script attend gentiment.

Mettre ce bout de code dans une boucle de décompte de temps ne marche pas vu que le script ne passe plus la ligne suivante.

NbSessions = theServer.Sessions.Count
    If Err.Number <> 0 Then
     WScript.Echo Server & vbTab & "Probleme de comptage des sessions"
     Err.Number = 0
    End If

Merci d'avance pour vos réponses.

5 réponses

Messages postés
141
Date d'inscription
lundi 23 février 2004
Statut
Membre
Dernière intervention
25 octobre 2006

Pour faire une pause utilise Sleep
wscript.sleep(200)
Messages postés
5
Date d'inscription
samedi 26 juillet 2003
Statut
Membre
Dernière intervention
15 janvier 2007

Bonjour BOmbJacK,

Le cas du sleep permet de faire une pause dans le script mais ce que je recherche serait plutot une action du type:
Essaye de faire NbSessions = theServer.Sessions.Count pendant x secondes et si non reponse continue.

A l'heure actuelle, si je mets un sleep devant, dès que j'arrive sur un serveur "freezé", le script reste en attente de la reponse du serveur distant jusqu'à ce qu'il réponde.

Actions
Action NbSessions
   si erreur => message
sinon
autres Actions
<Loop de la boucle> 

l'idée serait de mettre une durée limite de tentative à Action NbSessions

Merci quand même
Messages postés
141
Date d'inscription
lundi 23 février 2004
Statut
Membre
Dernière intervention
25 octobre 2006

Re...
j'ai peur de dire une connerie mais je me lance quand meme

moi je vois la chose comme ca

For i = 1 to 10 
   NbSessions = theServer.Sessions.Count
   If Err.Number <> 0 Then     ....... else    .......
   pause d'une seconde(Sleep)
 next i

toute les seconde yaura une tentative pendant 10seconde
Messages postés
141
Date d'inscription
lundi 23 février 2004
Statut
Membre
Dernière intervention
25 octobre 2006

et quand il s'agit d'un serveur ki freeze comme tu dis....
tu fais une tempo pour la reception  ...et si le temps est écoulé c'est ke le serveur est freezé ...et tu passe à un autre
Messages postés
5
Date d'inscription
samedi 26 juillet 2003
Statut
Membre
Dernière intervention
15 janvier 2007

Re B0mbJacK

J'ai déja tenté le coup.

en fait, les reponses des serveurs distants dans la boucle répondent dans un délai qui va de quelques dixièmes de secondes à quelques secondes (maxi observé 50 secondes).

Si le serveur est hors réseau, un test de ping me permet de ne pas requeter ma valeur. Par contre, si le serveur ne répond pas parce que serveur pingable mais ne répondant pas (serveur bagottant, on reste  en attente. Donc dans la conf que tu donnes, il ne passe pas par la ligne du sleep.

Par contre, je ne sais pas si mon test d'erreur marche bien sur une erreur de type "rpc distant non actif" par exemple.

Et remerci