extinction de postes sur le réseau - Shell/Batch - Programmation
Marsh Posté le 09-06-2006 à 15:30:01
if %%a in (...)
n'est pas la bonne syntaxe.
Tu dois faire des
if [not] %%a ==
pour tester chaque cas.
Marsh Posté le 09-06-2006 à 16:13:20
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
)
???
Marsh Posté le 09-06-2006 à 16:19:48
baobazz a écrit : pourtant qqch comme |
Peut-être Parce que tu es sous W2k. Sous XP, je n'ai que ça :
Code :
|
Sinon, ta nouvelle version devrait marcher.
Marsh Posté le 09-06-2006 à 16:35:31
sinon tu nas pas une petite idée pour faire fonctionner mon batch?
Marsh Posté le 09-06-2006 à 17:15:07
reugneugneu!!!
marche tjs pas...
jeffectue des tests avec echo, c plus prudent!
keski foire ds mon code?
Code :
|
Marsh Posté le 10-06-2006 à 08:24:23
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 !
Marsh Posté le 12-06-2006 à 10:04:31
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!
Marsh Posté le 12-06-2006 à 13:16:13
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
Marsh Posté le 12-06-2006 à 15:24:32
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"
Marsh Posté le 09-06-2006 à 15:11:53
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:
merci!!!