Script Dos extinction Pc allumés depuis liste passée en paramètre

Script Dos extinction Pc allumés depuis liste passée en paramètre - Shell/Batch - Programmation

Marsh Posté le 18-06-2004 à 11:23:04    

Salut à tous,
 
je cheche à faire un script qui va éteindre toutes les machines allumées (nom de machine contenu dans un fichier texte passé en entrée).
Jusque la aucun pb (for /F %i IN (fichier contenant les noms de machines du réseau.txt) do shutdown.EXE -s -f -t 10 -m \\%i).
 
Mais cette méthode est un peu "bourrine"
Je voudrais pinger les machines et éteindre celle qui répondent.
 
Sinon si vous connaissez un bon site sur la programmation en script dos, je suis preneur.
 
 
 

Reply

Marsh Posté le 18-06-2004 à 11:23:04   

Reply

Marsh Posté le 18-06-2004 à 16:22:12    

Un bon site en anglais :
http://www.robvanderwoude.com/index.html
pas d'idée pour le reste.
A+

Reply

Marsh Posté le 19-06-2004 à 15:06:24    

merci

Reply

Marsh Posté le 21-06-2004 à 16:38:35    

Pq le pb c'est que j'ai 500 machine a atteindre et assez rapidement.
Et le shutdown a un timeout assez élévé (anviron 50 secondes) si la machine est déja éteinte. Ce qui ralentit énormément mon script.
Si vous avez d'autres idées de script ou si vous savez s'il est possible de diminuer le timeout du shutdown...

Reply

Marsh Posté le 22-06-2004 à 09:43:30    

j'ai pas le temps de tester, mais essaie dans cette voie :
il faut 2 fichiers batch  
dans le 1° :
for /f %i in fichier do call test2.bat %i
 
 
dans test2.bat :
ping %1|find "dépassé"
if errorlevel 1 goto fin
shutdown ..... \\%1
:fin
 
 
attention dans le 2° batch, c'est %1 et pas %i
A+
JPA

Reply

Marsh Posté le 22-06-2004 à 09:46:25    

pour faire une seule fois le test du ping et gagner ainsi 9 secondes par machine éteinte :
ping -n 1 %1|find "dépassé"  

Reply

Marsh Posté le 22-06-2004 à 11:13:56    

en plus de la solution proposée par JPA
à la place du call, il est possible d'utiliser 'start /b', qui n'attend pas le retour de la commande appellée pour passer à la suivante, (contrairement à call je crois).
-> ça revient à lancer un mass shutdown en parallèle ;)
 
je propose ça, mais tu n'as pas précisé l'environnement et les conditions d'éxécution.
a+

Reply

Marsh Posté le 22-06-2004 à 11:18:54    

petite correction d'erreur :
if not errorlevel 1 goto fin  
 
find a trouvé le mot "dépassé" dans la réponse du ping -> machine éteinte

Reply

Marsh Posté le 22-06-2004 à 18:55:42    

merci JPA, je vais prendre cetyte méthode, mais tu peux le faire en un seul batch (sous NT)
 
for /f %i in fichier do (ping %i|find "dépassé"  
if errorlevel 1 goto fin  
shutdown ..... \\%i  
:fin )

Reply

Marsh Posté le 23-06-2004 à 08:11:30    

C'est vrai que j'ai gardé des habitudes d'avant guerre (du golfe)...

Reply

Marsh Posté le 23-06-2004 à 08:11:30   

Reply

Marsh Posté le 23-06-2004 à 15:41:10    

La version définitive si ça peut intéresser qqu'1!!!
Par contre j'ai pas trouvé de moyen de faire 2 actions dans le "IF", obligé de le répeter 2 fois.
Si qqu'1 sais?
 
@echo off
cls
for /F %%i IN (d:\test\MACHINE2.txt) DO (PING -n 2 -w 4 %%i | FIND "TTL=">NUL
IF NOT ERRORLEVEL 1 (shutdown -r -f -t 60 -m \\%%i) else (Echo machine %%i deja eteinte >> d:\test\result.txt)
IF NOT ERRORLEVEL 1 (echo machine %%i maintenant eteinte  >> d:\test\result.txt)  
)

Reply

Marsh Posté le 12-04-2005 à 12:33:55    

je pose un drapal

Reply

Marsh Posté le 12-04-2005 à 21:49:08    

Un drapal pour quoi ? :)
 
Si c'est le pb de deux commandes pour le if :

Code :
  1. @echo off
  2. cls
  3. for /F %%i IN (d:\test\MACHINE2.txt) DO (
  4.   PING -n 2 -w 4 %%i | FIND "TTL=">NUL
  5.   IF NOT ERRORLEVEL 1 (
  6.     shutdown -r -f -t 60 -m \\%%i
  7.     echo machine %%i maintenant eteinte  >> d:\test\result.txt
  8.     rem ... autre commandes ici
  9.   ) else (
  10.     echo machine %%i deja eteinte >> d:\test\result.txt
  11.     rem ... autre commandes ici
  12.   )
  13. )

Reply

Marsh Posté le 18-04-2005 à 17:11:20    

la commande shutdown est pas reconnu chez moi, et sinon, j'ai reussit avec :
 

Code :
  1. tsshutdn 5 /SERVER:Poste01


 
et la je suis au cyber et ca ne marche pas, il me dit : erreur lors de l'ouverture du terminal serveur sur poste08
 
pourtant cette commande marhait chez un pot hier avec 2 portables ( un win 200serveur et un XP )
 
ici au cyber ( un win2000serveur et des 2000 )

Reply

Marsh Posté le 21-04-2005 à 09:41:08    

En fait, sous windows 2000 serveur, la commande shutdown n'existe pas, j'ai donc essayer avec tsshutdn mais ca me dit que le service terminal serveur etc etc ...
 
Or la je suis sous xp sur mon portable et je tente donc de lancer le script pour éteindre le PC (xp) d'un pot juste a coté, il est bien pingé mais la comande shutdown -s -m \\%1%  
 
n'éteind pas le PC, ca me dit "le chemin réseau n'a pas été trouvé", pourtant le PC est bien pingé !  
 
Besoin d'aide !

Reply

Marsh Posté le 15-07-2005 à 13:39:43    

Sa marche pas si T pas admin du POSTE!

Reply

Marsh Posté le 13-10-2005 à 14:16:49    

voilà ce que je cherchais!
en revanche chez moi ca déconne !  
j'ai mis ça dans mon .bat:
 
 
for /F %%i IN (c:\liste2.txt) DO (  
  PING -n 1 -w 5 %%i | FIND "TTL=">NUL  
  IF NOT ERRORLEVEL 1 (  
    @echo %%i allumé
  ) else (  
    @echo %%i éteint
  )  
)
 
bon j'ai juste mis un echo pour le moment mais c pas ca que je veux faire je vous rassure! lol
par contre qd je lance ce batch j'ai "ce processus a tenté d'écrire sur un canal inexistant" qui s'affiche des centaines de fois à l'écran avant que la fenetre DOs se ferme completement !!! qqn voit ce qui peut déconner ??
 
merci
 
@+


Message édité par golum666 le 13-10-2005 à 14:47:33

---------------
pourquoi remettre à demain ce que l'on peut faire ... après demain !!!
Reply

Marsh Posté le 13-10-2005 à 14:17:47    

pour etre sur... dans votre fichier .txt vous avez simplement un nom de poste par ligne et rien d'autre ??!!


---------------
pourquoi remettre à demain ce que l'on peut faire ... après demain !!!
Reply

Marsh Posté le 13-10-2005 à 15:48:36    

Ton script marche chez moi.
Chaque ligne du fichier .txt contient uniquement le nom d'une machine.
 
Vérifie ta variable PATH ou ajoute :
set PATH=%SystemRoot%;%SystemRoot%\system32
 
au début de ton script pour être sûr que la bonne version de chaque commande est exécutée.

Reply

Marsh Posté le 13-10-2005 à 15:56:19    

wackevat a écrit :

au début de ton script pour être sûr que la bonne version de chaque commande est exécutée.


 
y'a des fois ou j'ai envie d'ouvrir la fenetre ... et de sauter ! :bounce:  
 
j'ai changé le nom de mon .bat et ca marche !  
 
il s'appelait ping.bat !!! :cry:  
 
 
désolé de vous avoir dérangé betement !!! :pfff:  


---------------
pourquoi remettre à demain ce que l'on peut faire ... après demain !!!
Reply

Marsh Posté le 13-10-2005 à 16:01:36    

:lol:
 
@+

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed