Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2110 connectés 

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  extinction de postes sur le réseau

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

extinction de postes sur le réseau

n°1384596
baobazz
Posté le 09-06-2006 à 15:11:53  profilanswer
 

Bonjour,
 
J'ai crééun batch qui me permet d'éteindre les postes allumés sur le réseau.
Pour cela, le batch sonde tous les ordis du réseau et applique la commande psshutdown (issu des Pstools).
Seulement, j'aimerais exclure de la liste des ordis à éteindre trois postes nommés srv_ppal, serveur2 et comptalinux....
seulement, je n'arrive pas à fonctionner le batch. le problème se situe au niveau de la condition if inclue ds une boucle...
si qqn peut m'aider à le résoudre...
 
voici le batch:

Code :
  1. @echo off
  2. title affichage de la liste des PC connect,s
  3. NET VIEW > listePC
  4. FOR /F "skip=3 eol=L" %%a IN (listePC) DO (if not %%a in (STATLINUX, SRV_PRINCIPAL, ServeurNT1) psshutdown -s %%a)
  5. del listePC
  6. pause


 
merci!!!
 

mood
Publicité
Posté le 09-06-2006 à 15:11:53  profilanswer
 

n°1384620
wackevat
Posté le 09-06-2006 à 15:30:01  profilanswer
 

if %%a in (...)
 
n'est pas la bonne syntaxe.
 
Tu dois faire des  
if [not] %%a ==
pour tester chaque cas.

n°1384701
baobazz
Posté le 09-06-2006 à 16:13:20  profilanswer
 

comment ça, ce n'est pas bonne syntaxe?
pourtant qqch comme
if %username% in (dupont, dupond)...marche...
tu veux dire que ça ne fonctionne pas au sein d'une boucle?
 
:(
 
comment dois-je m'y prendre?
 
Dois-je écrire ceci:
FOR /F "skip=3 eol=L" %%a IN (listePC) DO (
if not %%a == STATLINUX psshutdown -s %%a
if not %%a == SRV_PRINCIPAL psshutdown -s %%a
if not %%a == SERVEURNT1 psshutdown -s %%a
)
 
???
 
 
 

n°1384713
wackevat
Posté le 09-06-2006 à 16:19:48  profilanswer
 

baobazz a écrit :

pourtant qqch comme
if %username% in (dupont, dupond)...marche...


Peut-être :D Parce que tu es sous W2k. Sous XP, je n'ai que ça :

Code :
  1. IF [NOT] ERRORLEVEL number command
  2. IF [NOT] string1==string2 command
  3. IF [NOT] EXIST filename command
  4. ....
  5. If Command Extensions are enabled IF changes as follows:
  6.     IF [/I] string1 compare-op string2 command
  7.     IF CMDEXTVERSION number command
  8.     IF DEFINED variable command
  9. where compare-op may be one of:
  10.     EQU - equal
  11.     NEQ - not equal
  12.     LSS - less than
  13.     LEQ - less than or equal
  14.     GTR - greater than
  15.     GEQ - greater than or equal


 
Sinon, ta nouvelle version devrait marcher.

n°1384730
baobazz
Posté le 09-06-2006 à 16:35:31  profilanswer
 

sinon tu nas pas une petite idée pour faire fonctionner mon batch?
;)

n°1384732
wackevat
Posté le 09-06-2006 à 16:38:17  profilanswer
 

Euh, j'y avais répondu non ? Deux fois même :D

n°1384752
baobazz
Posté le 09-06-2006 à 17:05:53  profilanswer
 

heu...désolé!
en effet: je sui un peu étourdi.
 :)  

n°1384764
baobazz
Posté le 09-06-2006 à 17:15:07  profilanswer
 

reugneugneu!!!
 :fou:  
 :??:  :)  
 
marche tjs pas...
jeffectue des tests avec echo, c plus prudent! :pt1cable:  
 
keski foire ds mon code?
 

Code :
  1. @echo off
  2. rem @echo off
  3. rem NET VIEW > \listePC.txt
  4. rem FOR /F "skip=3 eol=L" %%a IN (c:\listePC.txt) DO echo %%a
  5. rem pause
  6. @echo off
  7. title affichage de la liste des PC connect,s
  8. NET VIEW > listePC
  9. FOR /F "skip=3 eol=L" %%a IN (listePC) DO
  10. (
  11. if not %%a == STATLINUX echo %%a
  12. if not %%a == SRV_PRINCIPAL echo %%a
  13. if not %%a == SERVEURNT1 echo %%a
  14. )
  15. del listePC
  16. pause

n°1384980
pascale73
Posté le 10-06-2006 à 08:24:23  profilanswer
 

Effectivement cette commande ne peut pas fonctionner pour SRV_PRINCIPAL et  SERVEURNT1 puisque dès la première ligne l'opération est déjà lancée.  
 
FOR /F "skip=3 eol=L" %%a IN (listePC) DO (
       if not %%a == STATLINUX echo %%a
              if not %%a == SRV_PRINCIPAL echo %%a
                       if not %%a == SERVEURNT1 echo %%a
)
 
En fait, il faut imbriquer les conditions entre elles pour que cela fonctionne.  
(à la place de "if not %%a ==" je préfère utiliser "if %%a neq" )
 
FOR /F "skip=3 eol=L" %%a IN (listePC) DO (
        if %%a neq STATLINUX (
               if %%a neq SRV_PRINCIPAL (
                       if %%a neq SERVEURNT1 (
                       echo %%a
                       psshutdown -s %%a  
                       )
               )
        )
)
 
ATTENTION à respecter la syntaxe et la place des paranthèses dans ce genre de commandes !

n°1385063
wackevat
Posté le 10-06-2006 à 12:56:44  profilanswer
 

Euh, pourquoi eol=L ?

mood
Publicité
Posté le 10-06-2006 à 12:56:44  profilanswer
 

n°1385620
baobazz
Posté le 12-06-2006 à 10:04:31  profilanswer
 

merci, c parfait, pascale.
Par contre, pour ceux que ce batch intéresserait, juste un détail, il faut écrire:
if %%a neq \\STATLINUX (  
ne pas oublier las anti-slashes.
pascale, tu as tout à fait répondu à ma question!
 
Maintenant, pour répondre à nglechau, le résultat de net view donne en fin de ligne le message
"La commande s'est terminée correctement"
Or, on ne souhaite pas que ce message soit pris en compte dans la liste des PCs.
Donc on spécifie le "L" de "La commande [...]" comme caractère de fin de ligne!
 
voili voilou!
 
;)

n°1385745
wackevat
Posté le 12-06-2006 à 13:16:13  profilanswer
 

C'est-à-dire il n'y a aucun poste sur le réseau dont le nom contient un L ? ;)
 
Sinon, merci pour info, étant donné que je ne connaisais pas la sortie de la commande en fr :D


Message édité par wackevat le 12-06-2006 à 13:17:37
n°1385836
baobazz
Posté le 12-06-2006 à 15:24:32  profilanswer
 

ben en fait, ds la résultat, ls postes sont précédés de deux anti-slashes:
\\
donc en fait, il n'y a aucune ligne concernant les postes qui ne commence par un "L"


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

  extinction de postes sur le réseau

 

Sujets relatifs
Impression via le réseau[C++]Probleme Logiciel Réseau
Petit script VB pour receuillir des informations sur des PC en réseauFaire un .bat pour une update sur réseau.
Executer une commande en VBS sur les postes d'une OU ?faire une application en reseau
Mapper un lecteur réseau à un dossier localRequète Access qui marche en local et pas à travers le réseau.
Accès à un fichier sur réseauAPI win32 + logiciel réseau
Plus de sujets relatifs à : extinction de postes sur le réseau


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)