France Hardware : Forums de discussion
Retrouvez les prix près de chez vous :  
Index du forum | Liste des membres | Liste des groupes | Inscription | F-A-Q | Recherche
Pseudo :    Password :     
22 318 membres enregistrés - 1 871 645 posts - 95 030 topics
Index des forums FH  | Index des forums DegroupNews
      Systèmes et Logiciels Windows
           [batch] Comment avoir le retour d'une commande après quelques secondes
31 connectés(record : 207 le 05 juin 2007 - 05 h 23)

Vous devez vous connecter pour répondre au topic.
[batch] Comment avoir le retour d'une commande après quelques secondes

Woofy
Pour les bons tuyaux me demander

Messages : 26 008
Inscrit le 11/01/02
Ville : Paris / Grenoble
Non connecté
  Posté le 24 janvier 2008 - 09 h 52 m 54 s
Sur mon réseau, tout les jours je redémarre un service. J'utilise les commandes NET STOP, NET START dans un fichier batch, lancé par une tache planifiée. Seulement, comme le dirait Garcimore : des fois ça marche, des fois ça marche pas ! En gros, il arrive que le service ne démarre pas après un NET START.
Il redémarre quand je refais un NET START manuellement, quelques heures plus tard.
Je n'ai par contre aucune idée de pourquoi il ne redémarre pas parfois, et ce que le NET START me renvoie lorsqu'il ne redémarre pas.
J'aimerais faire un fichier batch qui tente de faire des NET START à 1 seconde d'intervalle jusqu'a ce que le service ai redémarré.
Le service ne se démarre pas instantanément, il lui faut quelques secondes.

Comment faire ? Merci de votre aide.



:smileymouth: Totalement inutile, donc completement indispensable :smileymouth:

:sms:


HomeBoy38


Messages : 231
Inscrit le 15/07/07
Ville : Grenoble
Non connecté
  Posté le 24 janvier 2008 - 14 h 36 m 38 s
Essaye quelque chose dans le genre :

-------------------------------------------------------------------
@ECHO OFF

:LOOP
ECHO.
ECHO Waiting 10 seconds...
SLEEP 10
ECHO.
NET STOP ASRSRVC
NET START ASRSRVC
IF ERRORLEVEL 1 GOTO LOOP
IF ERRORLEVEL 0 GOTO END

:END
ECHO.
ECHO Service running successfully
ECHO.

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

le slip :lol: que j'utilise vient du "Windows Resource Kit" mais de nombreux exécutables existent avec un petit gogole...

tiens moi au courant si Y'a problème...




djalex
Canta U Populu Corsu

Messages : 6 532
Inscrit le 08/01/02
Ville : Lyon / Bastia
Non connecté
  Posté le 24 janvier 2008 - 16 h 39 m 33 s
je pense plutot à cela :

Net stop services

sleep 60

net start services




A mezzu mare .....

Woofy
Pour les bons tuyaux me demander

Messages : 26 008
Inscrit le 11/01/02
Ville : Paris / Grenoble
Non connecté
  Posté le 24 janvier 2008 - 17 h 38 m 35 s
Non pas possible, je ne peux pas me permettre d'attendre 1 minute avant le redémarrage du service. Faut que je tente tout de suite, qu'il reste tombé le moins longtemps possible.
De plus, le redémarrage ne marche pas toujours.
Pour le moment je ne fais pas de sleep. Je fais juste

NET STOP service
:LOOP
NET START service
IF ERRORLEVEL 1 GOTO LOOP



:smileymouth: Totalement inutile, donc completement indispensable :smileymouth:

:sms:


Petit_PimoOosE
rsqrtps & pshufb

Messages : 4 616
Inscrit le 15/06/03
Ville : Montréal
Non connecté
  Posté le 25 janvier 2008 - 05 h 13 m 47 s
Je trouve un peu inquiétant que le "net start" ne marche pas au premier coup...

edit: ah, mais c'est peut-être parce qu'il n'ait pas fini de s'arrêter au moment où tu essaies de le redémarrer...
Tu peux peut-être essayer l'option "restart" de PsService

cela dit, l'option proposée par djalex marche aussi, il suffit de réduire le délai ^^


Message édité 3 fois, la dernière par Petit_PimoOosE le 25 janvier 2008 - 05 h 26.

Huile de fraise.

Woofy
Pour les bons tuyaux me demander

Messages : 26 008
Inscrit le 11/01/02
Ville : Paris / Grenoble
Non connecté
  Posté le 25 janvier 2008 - 07 h 12 m 51 s
Ben en même temps, il ne tente pas de faire le net start tant que le net stop n'a pas rendu la main. Et l'option de djalex n'est pas envisageable, si je peux gagner la moindre seconde je le ferais (en fait si je pouvais ne pas redémarrer le service je le ferais).



:smileymouth: Totalement inutile, donc completement indispensable :smileymouth:

:sms:


Petit_PimoOosE
rsqrtps & pshufb

Messages : 4 616
Inscrit le 15/06/03
Ville : Montréal
Non connecté
  Posté le 25 janvier 2008 - 13 h 13 m 43 s
Au fait, pourquoi tu as besoin de redémarrer le service ? Il n'y a pas une autre solution ?

Et j'essaierai quand même PsServices, ne serait-ce que pour voir si le restart, lui, efficace.

edit: autre solution (dont je me retire le crédit):
    Code     
1. :boucle
2. rem 2182 est le code d'erreur de service déjà démarré
3. NET START service 2>&1 | FIND "2182"
4. IF errorlevel 1 goto :boucle


Message édité 1 fois, la dernière par Petit_PimoOosE le 25 janvier 2008 - 13 h 20.

Huile de fraise.

Woofy
Pour les bons tuyaux me demander

Messages : 26 008
Inscrit le 11/01/02
Ville : Paris / Grenoble
Non connecté
  Posté le 25 janvier 2008 - 13 h 47 m 28 s
En fait je le redémarre parcqu'il plante au bout d'un moment sinon ! :/
Le bug est connu, mais on ne sait pas encore le corriger.
Ca n'as pas planté cette nuit, on verra a la longue si ça recommence. Je fais a peu prêt ce que tu m'as donné (sans chercher le code 2182).
Merci !



:smileymouth: Totalement inutile, donc completement indispensable :smileymouth:

:sms:


Woofy
Pour les bons tuyaux me demander

Messages : 26 008
Inscrit le 11/01/02
Ville : Paris / Grenoble
Non connecté
  Posté le 05 février 2008 - 09 h 57 m 37 s
Bon ça continue parfois à ne pas redémarrer, malgrès le fait que le service tente de le relancer en vain.
Comment faire ? Redirection de la sortie de la commande dans un fichier pour voir ce qui se passe ?



:smileymouth: Totalement inutile, donc completement indispensable :smileymouth:

:sms:


Woofy
Pour les bons tuyaux me demander

Messages : 26 008
Inscrit le 11/01/02
Ville : Paris / Grenoble
Non connecté
  Posté le 26 mars 2008 - 10 h 44 m 31 s
Bon je remonte mon topic car j'aimerais ajouter un envoi de mail à mon script, afin de savoir si le service n'a pas redémarré.
J'ai téléchargé le programme mailsend afin d'envoyer des mails en ligne de commande.

Et je tente d'avoir dans une execution conditionnelle le retour d'une fonction, je n'y arrive pas. En gros :

    Code     
1. IF (NET START | find "Mon Service") NEQ "Mon Service" (mailsend -d mondomaine.net -smtp 192.168.168.250 -t recipient@mondomaine.net -f expediteur@mondomaine.net +cc +bc -sub "Service : Restart failed" -M "Failed to restard service. Please restart it quickly.")


Le NET START dans le IF, ça passe pas. Comment faire ?



:smileymouth: Totalement inutile, donc completement indispensable :smileymouth:

:sms:


Petit_PimoOosE
rsqrtps & pshufb

Messages : 4 616
Inscrit le 15/06/03
Ville : Montréal
Non connecté
  Posté le 06 avril 2008 - 17 h 49 m 26 s
Je ne sais pas, mais de toute façon, je pense que mailsend ne sera jamais exécuté parce que
net start | find xxx
va retourner la valeur de retour (%errorlevel%) de find.

Il faudrait que tu gardes la forme que je proposais dans mon dernier message.



Huile de fraise.

Woofy
Pour les bons tuyaux me demander

Messages : 26 008
Inscrit le 11/01/02
Ville : Paris / Grenoble
Non connecté
  Posté le 06 avril 2008 - 18 h 43 m 35 s
Bah pourtant, si je le fais à la main ça marche ?



:smileymouth: Totalement inutile, donc completement indispensable :smileymouth:

:sms:


Petit_PimoOosE
rsqrtps & pshufb

Messages : 4 616
Inscrit le 15/06/03
Ville : Montréal
Non connecté
  Posté le 06 avril 2008 - 20 h 37 m 32 s
comment ça ?

en fait, ce que je propose, c'est que au lieu de faire
    Code     
1. IF (NET START | find "Mon Service") NEQ "Mon Service" (mailsend -d mondomaine.net -smtp 192.168.168.250 -t recipient@mondomaine.net -f expediteur@mondomaine.net +cc +bc -sub "Service : Restart failed" -M "Failed to restard service. Please restart it quickly.")
, tu pourrais faire
    Code     
1. NET START | find "Mon Service"
2. IF errorlevel 1 (mailsend -d mondomaine.net -smtp 192.168.168.250 -t recipient@mondomaine.net -f expediteur@mondomaine.net +cc +bc -sub "Service : Restart failed" -M "Failed to restard service. Please restart it quickly.")


parce que find ne retourne pas une chaîne mais un entier (à moins que je ne me trompe évidemment).


Message édité 2 fois, la dernière par Petit_PimoOosE le 06 avril 2008 - 20 h 40.

Huile de fraise.

Woofy
Pour les bons tuyaux me demander

Messages : 26 008
Inscrit le 11/01/02
Ville : Paris / Grenoble
Non connecté
  Posté le 07 avril 2008 - 10 h 14 m 57 s
En fait, si je fais à la main quelque chose du genre NET START | find "NLA" ça me retourne bien "NLA (Network Location Awareness)" sur la sortie standard.



:smileymouth: Totalement inutile, donc completement indispensable :smileymouth:

:sms:


Petit_PimoOosE
rsqrtps & pshufb

Messages : 4 616
Inscrit le 15/06/03
Ville : Montréal
Non connecté
  Posté le 07 avril 2008 - 17 h 33 m 30 s
Ah, oui, sur la sortie standard.
Mais IF compare son deuxième opérande avec la valeur de retour du process, pas avec ce qui est écrit.

Il faudrait un équivalent du (ba|c|k)sh-isme `commande`, mais je n'en connais pas...

edit: à ma connaissance, la comparaison de chaînes se limite au fruit de l'expansion d'un paramètre ou d'une variable d'environnement (et des chaînes codées en dur)...


Message édité 1 fois, la dernière par Petit_PimoOosE le 07 avril 2008 - 17 h 38.

Huile de fraise.

Page genérée en 0.8276 secondes par RahForum 2.0 | Gzip off |  Stats |  Metaforums |  RSS
© 2004 Cerbere Systems.
Prix Matériel Informatique | Informatique Lyon | Informatique Grenoble | Informatique Annecy | Informatique Marseille | Informatique Bordeaux | Forum Informatique
ADSL |Actualité ADSL | e-commerce | Commande Au Volant
Creative Commons
Message Boards and Forums Directory