Je suis une super quiche en dev et je cherche à faire un script de test pour
lancer une copie, je m'explique:
je dois sauvegarder des données sur des portables qui peuvent changer de
site dans une meme société. Genre portable de X qui bosse sur Paris vas
aller sur le site de la société qui est à lorient.
je veux lancer ma synchro que lorsqu'il est sur le site principal pour
éviter de bouffer la bande passante entre Lorient et Paris.
J'ai commancé à bidouiller un script en batch mais je n'abouti a rien de
concret.
Le site de Paris a une classe d'adresse spécifique et celui de Lorient
aussi, genre 170.1.10.X et 180.1.100.X
Mon souhait serait de faire ce script en VBS mais mes connaissances sont
super limitées.
Auriez vous des bribes de codes qui pourraient m'intéresser ou un exemple
dont je pourrais m'inspirer?
"Gilles LAURENT" a écrit dans le message de news: %
"Eric Galais" a écrit dans le message de news: | Bon, j'ai presque tout finalisé mais il me reste une certitude à | avoir. J'ai remarqué que je dois faire mes tests sur les 2 premiers | digits de l'adresse IP: 130.1 ou 130.10 ou autre, au lieu du premier | uniquement. | Si j'ai bien compris j'ai qu'à changer les tokens comme suit:
[...]
| Eric
Il suffit uniquement de remplacer la ligne : set netId=%%j par : set netId=%%j.%%k
et le tour et joué ;-)
-- Gilles LAURENT Me contacter : http://cerbermail.com/?zoTY7ZkLcD
Encore plus simple en effet. J'ai récupéré un guide sur le scripting en batch bien puissant, j'ai du boulot :)
Encore un grand merci, je vais pouvoir faire ma démo cet aprèm à ma hiérarchie.
Bonne journée.
Eric
"Gilles LAURENT" <glsft@free.fr> a écrit dans le message de news:
%23lslQu5xGHA.4732@TK2MSFTNGP03.phx.gbl...
"Eric Galais" <x@x.com> a écrit dans le message de
news:u29rtc5xGHA.4732@TK2MSFTNGP03.phx.gbl
| Bon, j'ai presque tout finalisé mais il me reste une certitude à
| avoir. J'ai remarqué que je dois faire mes tests sur les 2 premiers
| digits de l'adresse IP: 130.1 ou 130.10 ou autre, au lieu du premier
| uniquement.
| Si j'ai bien compris j'ai qu'à changer les tokens comme suit:
[...]
| Eric
Il suffit uniquement de remplacer la ligne :
set netId=%%j
par :
set netId=%%j.%%k
et le tour et joué ;-)
--
Gilles LAURENT
Me contacter : http://cerbermail.com/?zoTY7ZkLcD
Encore plus simple en effet.
J'ai récupéré un guide sur le scripting en batch bien puissant, j'ai du
boulot :)
Encore un grand merci, je vais pouvoir faire ma démo cet aprèm à ma
hiérarchie.
"Gilles LAURENT" a écrit dans le message de news: %
"Eric Galais" a écrit dans le message de news: | Bon, j'ai presque tout finalisé mais il me reste une certitude à | avoir. J'ai remarqué que je dois faire mes tests sur les 2 premiers | digits de l'adresse IP: 130.1 ou 130.10 ou autre, au lieu du premier | uniquement. | Si j'ai bien compris j'ai qu'à changer les tokens comme suit:
[...]
| Eric
Il suffit uniquement de remplacer la ligne : set netId=%%j par : set netId=%%j.%%k
et le tour et joué ;-)
-- Gilles LAURENT Me contacter : http://cerbermail.com/?zoTY7ZkLcD
Encore plus simple en effet. J'ai récupéré un guide sur le scripting en batch bien puissant, j'ai du boulot :)
Encore un grand merci, je vais pouvoir faire ma démo cet aprèm à ma hiérarchie.
Bonne journée.
Eric
Gilles LAURENT
"Eric Galais" a écrit dans le message de news:%
[...]
| J'ai récupéré un guide sur le scripting en batch bien puissant, j'ai | du boulot :)
Et oui ! c'est toujours comme ça ;-) Je vous invite également à découvrir le nouveau shell Microsoft Windows PowerShell consultable à cette adresse ... http://www.microsoft.com/windowsserver2003/technologies/management/powershell/default.mspx
... ainsi que le blog de Jacques Barathon [MS] sur Windows PowerShell : http://janel.spaces.msn.com/blog
| Encore un grand merci, je vais pouvoir faire ma démo cet aprèm à ma | hiérarchie.
Ce fut un plaisir. Bonne démo :-)
-- Gilles LAURENT Me contacter : http://cerbermail.com/?zoTY7ZkLcD
"Eric Galais" <x@x.com> a écrit dans le message de
news:%23xEyYlByGHA.1304@TK2MSFTNGP05.phx.gbl
[...]
| J'ai récupéré un guide sur le scripting en batch bien puissant, j'ai
| du boulot :)
Et oui ! c'est toujours comme ça ;-)
Je vous invite également à découvrir le nouveau shell Microsoft Windows
PowerShell consultable à cette adresse ...
http://www.microsoft.com/windowsserver2003/technologies/management/powershell/default.mspx
... ainsi que le blog de Jacques Barathon [MS] sur Windows PowerShell :
http://janel.spaces.msn.com/blog
| Encore un grand merci, je vais pouvoir faire ma démo cet aprèm à ma
| hiérarchie.
Ce fut un plaisir. Bonne démo :-)
--
Gilles LAURENT
Me contacter : http://cerbermail.com/?zoTY7ZkLcD
| J'ai récupéré un guide sur le scripting en batch bien puissant, j'ai | du boulot :)
Et oui ! c'est toujours comme ça ;-) Je vous invite également à découvrir le nouveau shell Microsoft Windows PowerShell consultable à cette adresse ... http://www.microsoft.com/windowsserver2003/technologies/management/powershell/default.mspx
... ainsi que le blog de Jacques Barathon [MS] sur Windows PowerShell : http://janel.spaces.msn.com/blog
| Encore un grand merci, je vais pouvoir faire ma démo cet aprèm à ma | hiérarchie.
Ce fut un plaisir. Bonne démo :-)
-- Gilles LAURENT Me contacter : http://cerbermail.com/?zoTY7ZkLcD
Jacques Barathon [MS]
"Gilles LAURENT" a écrit dans le message de news: %233d$
"Eric Galais" a écrit dans le message de news:%
[...]
| J'ai récupéré un guide sur le scripting en batch bien puissant, j'ai | du boulot :)
Et oui ! c'est toujours comme ça ;-) Je vous invite également à découvrir le nouveau shell Microsoft Windows PowerShell consultable à cette adresse ... http://www.microsoft.com/windowsserver2003/technologies/management/powershell/default.mspx
... ainsi que le blog de Jacques Barathon [MS] sur Windows PowerShell : http://janel.spaces.msn.com/blog
Merci Gilles pour la promo. Je crois en effet que si l'on découvre le scripting système maintenant, il est plus intéressant d'investir du temps dans PowerShell que dans d'autres langages. PowerShell sera la plateforme de pilotage de Windows et de l'ensemble des produits serveur dans les années qui viennent (voir Exchange 2007, MOM 2007, etc).
Pour ce qui est du besoin exprimé par Eric, je me suis amusé à une petite traduction en PowerShell. Rien de bien transcendant, mais cela permet d'illustrer deux ou trois fonctionnalités sympathiques:
--- couper ici --- get-content postes.txt | foreach { $nom,$maison,$notes = $_.split("`t") $ping = new-object System.Net.NetworkInformation.Ping $reponse = "" $reponse = $ping.Send($nom,120,[byte]0,$null) if ($reponse.Status -eq "Success") { "$nom est en ligne. Adresse IP: $($reponse.Address.IPAddressToString)" $reponse.Address.IPAddressToString -match "^d+.d+" $site=$matches[0] if ($site -eq $maison) { "$nom est sur son site d'origine. Synchro..." # insérer ici tâche de synchro } else { "$nom n'est pas sur son site d'origine. Pas de synchro." } } else { "$nom n'est pas en ligne." } } --- couper ici ---
Quelques commentaires...
A noter l'affectation des variables selon le contenu de chaque ligne du fichier: $nom,$maison,$notes = $_.split("`t")
$_.split("`t") éclate la ligne en cours ($_) en utilisant le caractère de tabulation comme séparateur ("`t"). Si un autre séparateur est utilisé, il faut mettre à jour cette partie-là. Ensuite, les différentes parties sont affectées aux variables $nom,$maison et $notes dans l'ordre où elles sont rencontrées dans la ligne. Un autre exemple pour comprendre:
Le ping est fait avec un objet .NET. Il faut initialiser la variable $reponse avant de lui affecter le résultat du ping, sinon en cas d'échec de résolution du nom la variable contient le résultat du ping précédent, ce qui fausse complètement le reste du script.
L'analyse de l'adresse IP utilise une expression régulière pour isoler les deux premiers chiffres: "^d+.d+" correspond à un ou plusieurs chiffres ("d" pour "digit") suivis d'un point (".") suivi à nouveau d'un ou plusieurs chiffres, le tout en début de chaîne ("^"). Cette dernière précision s'avère à priori inutile mais je préfère être explicite, au cas où. Cette expression régulière est comparée à l'adresse IP du poste avec l'opérateur -match. Les résultats d'une comparaison faite avec -match sont toujours stockés dans la table $matches, et comme ici il ne peut y avoir qu'un résultat on le trouve dans $matches[0].
Voilà. Le reste relève de la procédure if ... else très classique et devrait se passer de commentaires. Je n'ai testé que très sommairement mais ça devrait pouvoir le faire.
Cela dit, les remarques de Gilles sur l'intérêt d'un pilotage des synchros depuis le serveur sont très justes. Des solutions initiées par les postes (avec toutes les précautions qui s'imposent) s'avèreraient à la fois plus simples, plus fiables et plus performantes.
Jacques
"Gilles LAURENT" <glsft@free.fr> a écrit dans le message de news:
%233d$YJHyGHA.4204@TK2MSFTNGP04.phx.gbl...
"Eric Galais" <x@x.com> a écrit dans le message de
news:%23xEyYlByGHA.1304@TK2MSFTNGP05.phx.gbl
[...]
| J'ai récupéré un guide sur le scripting en batch bien puissant, j'ai
| du boulot :)
Et oui ! c'est toujours comme ça ;-)
Je vous invite également à découvrir le nouveau shell Microsoft Windows
PowerShell consultable à cette adresse ...
http://www.microsoft.com/windowsserver2003/technologies/management/powershell/default.mspx
... ainsi que le blog de Jacques Barathon [MS] sur Windows PowerShell :
http://janel.spaces.msn.com/blog
Merci Gilles pour la promo. Je crois en effet que si l'on découvre le
scripting système maintenant, il est plus intéressant d'investir du temps
dans PowerShell que dans d'autres langages. PowerShell sera la plateforme de
pilotage de Windows et de l'ensemble des produits serveur dans les années
qui viennent (voir Exchange 2007, MOM 2007, etc).
Pour ce qui est du besoin exprimé par Eric, je me suis amusé à une petite
traduction en PowerShell. Rien de bien transcendant, mais cela permet
d'illustrer deux ou trois fonctionnalités sympathiques:
--- couper ici ---
get-content postes.txt | foreach {
$nom,$maison,$notes = $_.split("`t")
$ping = new-object System.Net.NetworkInformation.Ping
$reponse = ""
$reponse = $ping.Send($nom,120,[byte]0,$null)
if ($reponse.Status -eq "Success") {
"$nom est en ligne. Adresse IP: $($reponse.Address.IPAddressToString)"
$reponse.Address.IPAddressToString -match "^d+.d+"
$site=$matches[0]
if ($site -eq $maison) {
"$nom est sur son site d'origine. Synchro..."
# insérer ici tâche de synchro
}
else {
"$nom n'est pas sur son site d'origine. Pas de synchro."
}
}
else {
"$nom n'est pas en ligne."
}
}
--- couper ici ---
Quelques commentaires...
A noter l'affectation des variables selon le contenu de chaque ligne du
fichier:
$nom,$maison,$notes = $_.split("`t")
$_.split("`t") éclate la ligne en cours ($_) en utilisant le caractère de
tabulation comme séparateur ("`t"). Si un autre séparateur est utilisé, il
faut mettre à jour cette partie-là. Ensuite, les différentes parties sont
affectées aux variables $nom,$maison et $notes dans l'ordre où elles sont
rencontrées dans la ligne. Un autre exemple pour comprendre:
Le ping est fait avec un objet .NET. Il faut initialiser la variable
$reponse avant de lui affecter le résultat du ping, sinon en cas d'échec de
résolution du nom la variable contient le résultat du ping précédent, ce qui
fausse complètement le reste du script.
L'analyse de l'adresse IP utilise une expression régulière pour isoler les
deux premiers chiffres: "^d+.d+" correspond à un ou plusieurs chiffres
("d" pour "digit") suivis d'un point (".") suivi à nouveau d'un ou
plusieurs chiffres, le tout en début de chaîne ("^"). Cette dernière
précision s'avère à priori inutile mais je préfère être explicite, au cas
où. Cette expression régulière est comparée à l'adresse IP du poste avec
l'opérateur -match. Les résultats d'une comparaison faite avec -match sont
toujours stockés dans la table $matches, et comme ici il ne peut y avoir
qu'un résultat on le trouve dans $matches[0].
Voilà. Le reste relève de la procédure if ... else très classique et devrait
se passer de commentaires. Je n'ai testé que très sommairement mais ça
devrait pouvoir le faire.
Cela dit, les remarques de Gilles sur l'intérêt d'un pilotage des synchros
depuis le serveur sont très justes. Des solutions initiées par les postes
(avec toutes les précautions qui s'imposent) s'avèreraient à la fois plus
simples, plus fiables et plus performantes.
"Gilles LAURENT" a écrit dans le message de news: %233d$
"Eric Galais" a écrit dans le message de news:%
[...]
| J'ai récupéré un guide sur le scripting en batch bien puissant, j'ai | du boulot :)
Et oui ! c'est toujours comme ça ;-) Je vous invite également à découvrir le nouveau shell Microsoft Windows PowerShell consultable à cette adresse ... http://www.microsoft.com/windowsserver2003/technologies/management/powershell/default.mspx
... ainsi que le blog de Jacques Barathon [MS] sur Windows PowerShell : http://janel.spaces.msn.com/blog
Merci Gilles pour la promo. Je crois en effet que si l'on découvre le scripting système maintenant, il est plus intéressant d'investir du temps dans PowerShell que dans d'autres langages. PowerShell sera la plateforme de pilotage de Windows et de l'ensemble des produits serveur dans les années qui viennent (voir Exchange 2007, MOM 2007, etc).
Pour ce qui est du besoin exprimé par Eric, je me suis amusé à une petite traduction en PowerShell. Rien de bien transcendant, mais cela permet d'illustrer deux ou trois fonctionnalités sympathiques:
--- couper ici --- get-content postes.txt | foreach { $nom,$maison,$notes = $_.split("`t") $ping = new-object System.Net.NetworkInformation.Ping $reponse = "" $reponse = $ping.Send($nom,120,[byte]0,$null) if ($reponse.Status -eq "Success") { "$nom est en ligne. Adresse IP: $($reponse.Address.IPAddressToString)" $reponse.Address.IPAddressToString -match "^d+.d+" $site=$matches[0] if ($site -eq $maison) { "$nom est sur son site d'origine. Synchro..." # insérer ici tâche de synchro } else { "$nom n'est pas sur son site d'origine. Pas de synchro." } } else { "$nom n'est pas en ligne." } } --- couper ici ---
Quelques commentaires...
A noter l'affectation des variables selon le contenu de chaque ligne du fichier: $nom,$maison,$notes = $_.split("`t")
$_.split("`t") éclate la ligne en cours ($_) en utilisant le caractère de tabulation comme séparateur ("`t"). Si un autre séparateur est utilisé, il faut mettre à jour cette partie-là. Ensuite, les différentes parties sont affectées aux variables $nom,$maison et $notes dans l'ordre où elles sont rencontrées dans la ligne. Un autre exemple pour comprendre:
Le ping est fait avec un objet .NET. Il faut initialiser la variable $reponse avant de lui affecter le résultat du ping, sinon en cas d'échec de résolution du nom la variable contient le résultat du ping précédent, ce qui fausse complètement le reste du script.
L'analyse de l'adresse IP utilise une expression régulière pour isoler les deux premiers chiffres: "^d+.d+" correspond à un ou plusieurs chiffres ("d" pour "digit") suivis d'un point (".") suivi à nouveau d'un ou plusieurs chiffres, le tout en début de chaîne ("^"). Cette dernière précision s'avère à priori inutile mais je préfère être explicite, au cas où. Cette expression régulière est comparée à l'adresse IP du poste avec l'opérateur -match. Les résultats d'une comparaison faite avec -match sont toujours stockés dans la table $matches, et comme ici il ne peut y avoir qu'un résultat on le trouve dans $matches[0].
Voilà. Le reste relève de la procédure if ... else très classique et devrait se passer de commentaires. Je n'ai testé que très sommairement mais ça devrait pouvoir le faire.
Cela dit, les remarques de Gilles sur l'intérêt d'un pilotage des synchros depuis le serveur sont très justes. Des solutions initiées par les postes (avec toutes les précautions qui s'imposent) s'avèreraient à la fois plus simples, plus fiables et plus performantes.
Jacques
Eric Galais
"Jacques Barathon [MS]" a écrit dans le message de news: %
"Gilles LAURENT" a écrit dans le message de news: %233d$
"Eric Galais" a écrit dans le message de news:%
[...]
| J'ai récupéré un guide sur le scripting en batch bien puissant, j'ai | du boulot :)
Et oui ! c'est toujours comme ça ;-) Je vous invite également à découvrir le nouveau shell Microsoft Windows PowerShell consultable à cette adresse ... http://www.microsoft.com/windowsserver2003/technologies/management/powershell/default.mspx
... ainsi que le blog de Jacques Barathon [MS] sur Windows PowerShell : http://janel.spaces.msn.com/blog
Merci Gilles pour la promo. Je crois en effet que si l'on découvre le scripting système maintenant, il est plus intéressant d'investir du temps dans PowerShell que dans d'autres langages. PowerShell sera la plateforme de pilotage de Windows et de l'ensemble des produits serveur dans les années qui viennent (voir Exchange 2007, MOM 2007, etc).
Pour ce qui est du besoin exprimé par Eric, je me suis amusé à une petite traduction en PowerShell. Rien de bien transcendant, mais cela permet d'illustrer deux ou trois fonctionnalités sympathiques:
--- couper ici --- get-content postes.txt | foreach { $nom,$maison,$notes = $_.split("`t") $ping = new-object System.Net.NetworkInformation.Ping $reponse = "" $reponse = $ping.Send($nom,120,[byte]0,$null) if ($reponse.Status -eq "Success") { "$nom est en ligne. Adresse IP: $($reponse.Address.IPAddressToString)" $reponse.Address.IPAddressToString -match "^d+.d+" $site=$matches[0] if ($site -eq $maison) { "$nom est sur son site d'origine. Synchro..." # insérer ici tâche de synchro } else { "$nom n'est pas sur son site d'origine. Pas de synchro." } } else { "$nom n'est pas en ligne." } } --- couper ici ---
Quelques commentaires...
A noter l'affectation des variables selon le contenu de chaque ligne du fichier: $nom,$maison,$notes = $_.split("`t")
$_.split("`t") éclate la ligne en cours ($_) en utilisant le caractère de tabulation comme séparateur ("`t"). Si un autre séparateur est utilisé, il faut mettre à jour cette partie-là. Ensuite, les différentes parties sont affectées aux variables $nom,$maison et $notes dans l'ordre où elles sont rencontrées dans la ligne. Un autre exemple pour comprendre:
Le ping est fait avec un objet .NET. Il faut initialiser la variable $reponse avant de lui affecter le résultat du ping, sinon en cas d'échec de résolution du nom la variable contient le résultat du ping précédent, ce qui fausse complètement le reste du script.
L'analyse de l'adresse IP utilise une expression régulière pour isoler les deux premiers chiffres: "^d+.d+" correspond à un ou plusieurs chiffres ("d" pour "digit") suivis d'un point (".") suivi à nouveau d'un ou plusieurs chiffres, le tout en début de chaîne ("^"). Cette dernière précision s'avère à priori inutile mais je préfère être explicite, au cas où. Cette expression régulière est comparée à l'adresse IP du poste avec l'opérateur -match. Les résultats d'une comparaison faite avec -match sont toujours stockés dans la table $matches, et comme ici il ne peut y avoir qu'un résultat on le trouve dans $matches[0].
Voilà. Le reste relève de la procédure if ... else très classique et devrait se passer de commentaires. Je n'ai testé que très sommairement mais ça devrait pouvoir le faire.
Cela dit, les remarques de Gilles sur l'intérêt d'un pilotage des synchros depuis le serveur sont très justes. Des solutions initiées par les postes (avec toutes les précautions qui s'imposent) s'avèreraient à la fois plus simples, plus fiables et plus performantes.
Jacques
Merci bien pour ces quelques informations. Quand le temps me le permettra, je me jetterais dans le PowerShell, autant s'y mettre de suite.
Bonne continuation.
Eric
"Jacques Barathon [MS]" <jbaratho@online.microsoft.com> a écrit dans le
message de news: %23n4zGgSyGHA.2208@TK2MSFTNGP03.phx.gbl...
"Gilles LAURENT" <glsft@free.fr> a écrit dans le message de news:
%233d$YJHyGHA.4204@TK2MSFTNGP04.phx.gbl...
"Eric Galais" <x@x.com> a écrit dans le message de
news:%23xEyYlByGHA.1304@TK2MSFTNGP05.phx.gbl
[...]
| J'ai récupéré un guide sur le scripting en batch bien puissant, j'ai
| du boulot :)
Et oui ! c'est toujours comme ça ;-)
Je vous invite également à découvrir le nouveau shell Microsoft Windows
PowerShell consultable à cette adresse ...
http://www.microsoft.com/windowsserver2003/technologies/management/powershell/default.mspx
... ainsi que le blog de Jacques Barathon [MS] sur Windows PowerShell :
http://janel.spaces.msn.com/blog
Merci Gilles pour la promo. Je crois en effet que si l'on découvre le
scripting système maintenant, il est plus intéressant d'investir du temps
dans PowerShell que dans d'autres langages. PowerShell sera la plateforme
de pilotage de Windows et de l'ensemble des produits serveur dans les
années qui viennent (voir Exchange 2007, MOM 2007, etc).
Pour ce qui est du besoin exprimé par Eric, je me suis amusé à une petite
traduction en PowerShell. Rien de bien transcendant, mais cela permet
d'illustrer deux ou trois fonctionnalités sympathiques:
--- couper ici ---
get-content postes.txt | foreach {
$nom,$maison,$notes = $_.split("`t")
$ping = new-object System.Net.NetworkInformation.Ping
$reponse = ""
$reponse = $ping.Send($nom,120,[byte]0,$null)
if ($reponse.Status -eq "Success") {
"$nom est en ligne. Adresse IP: $($reponse.Address.IPAddressToString)"
$reponse.Address.IPAddressToString -match "^d+.d+"
$site=$matches[0]
if ($site -eq $maison) {
"$nom est sur son site d'origine. Synchro..."
# insérer ici tâche de synchro
}
else {
"$nom n'est pas sur son site d'origine. Pas de synchro."
}
}
else {
"$nom n'est pas en ligne."
}
}
--- couper ici ---
Quelques commentaires...
A noter l'affectation des variables selon le contenu de chaque ligne du
fichier:
$nom,$maison,$notes = $_.split("`t")
$_.split("`t") éclate la ligne en cours ($_) en utilisant le caractère de
tabulation comme séparateur ("`t"). Si un autre séparateur est utilisé, il
faut mettre à jour cette partie-là. Ensuite, les différentes parties sont
affectées aux variables $nom,$maison et $notes dans l'ordre où elles sont
rencontrées dans la ligne. Un autre exemple pour comprendre:
Le ping est fait avec un objet .NET. Il faut initialiser la variable
$reponse avant de lui affecter le résultat du ping, sinon en cas d'échec
de résolution du nom la variable contient le résultat du ping précédent,
ce qui fausse complètement le reste du script.
L'analyse de l'adresse IP utilise une expression régulière pour isoler les
deux premiers chiffres: "^d+.d+" correspond à un ou plusieurs chiffres
("d" pour "digit") suivis d'un point (".") suivi à nouveau d'un ou
plusieurs chiffres, le tout en début de chaîne ("^"). Cette dernière
précision s'avère à priori inutile mais je préfère être explicite, au cas
où. Cette expression régulière est comparée à l'adresse IP du poste avec
l'opérateur -match. Les résultats d'une comparaison faite avec -match sont
toujours stockés dans la table $matches, et comme ici il ne peut y avoir
qu'un résultat on le trouve dans $matches[0].
Voilà. Le reste relève de la procédure if ... else très classique et
devrait se passer de commentaires. Je n'ai testé que très sommairement
mais ça devrait pouvoir le faire.
Cela dit, les remarques de Gilles sur l'intérêt d'un pilotage des synchros
depuis le serveur sont très justes. Des solutions initiées par les postes
(avec toutes les précautions qui s'imposent) s'avèreraient à la fois plus
simples, plus fiables et plus performantes.
Jacques
Merci bien pour ces quelques informations. Quand le temps me le permettra,
je me jetterais dans le PowerShell, autant s'y mettre de suite.
"Jacques Barathon [MS]" a écrit dans le message de news: %
"Gilles LAURENT" a écrit dans le message de news: %233d$
"Eric Galais" a écrit dans le message de news:%
[...]
| J'ai récupéré un guide sur le scripting en batch bien puissant, j'ai | du boulot :)
Et oui ! c'est toujours comme ça ;-) Je vous invite également à découvrir le nouveau shell Microsoft Windows PowerShell consultable à cette adresse ... http://www.microsoft.com/windowsserver2003/technologies/management/powershell/default.mspx
... ainsi que le blog de Jacques Barathon [MS] sur Windows PowerShell : http://janel.spaces.msn.com/blog
Merci Gilles pour la promo. Je crois en effet que si l'on découvre le scripting système maintenant, il est plus intéressant d'investir du temps dans PowerShell que dans d'autres langages. PowerShell sera la plateforme de pilotage de Windows et de l'ensemble des produits serveur dans les années qui viennent (voir Exchange 2007, MOM 2007, etc).
Pour ce qui est du besoin exprimé par Eric, je me suis amusé à une petite traduction en PowerShell. Rien de bien transcendant, mais cela permet d'illustrer deux ou trois fonctionnalités sympathiques:
--- couper ici --- get-content postes.txt | foreach { $nom,$maison,$notes = $_.split("`t") $ping = new-object System.Net.NetworkInformation.Ping $reponse = "" $reponse = $ping.Send($nom,120,[byte]0,$null) if ($reponse.Status -eq "Success") { "$nom est en ligne. Adresse IP: $($reponse.Address.IPAddressToString)" $reponse.Address.IPAddressToString -match "^d+.d+" $site=$matches[0] if ($site -eq $maison) { "$nom est sur son site d'origine. Synchro..." # insérer ici tâche de synchro } else { "$nom n'est pas sur son site d'origine. Pas de synchro." } } else { "$nom n'est pas en ligne." } } --- couper ici ---
Quelques commentaires...
A noter l'affectation des variables selon le contenu de chaque ligne du fichier: $nom,$maison,$notes = $_.split("`t")
$_.split("`t") éclate la ligne en cours ($_) en utilisant le caractère de tabulation comme séparateur ("`t"). Si un autre séparateur est utilisé, il faut mettre à jour cette partie-là. Ensuite, les différentes parties sont affectées aux variables $nom,$maison et $notes dans l'ordre où elles sont rencontrées dans la ligne. Un autre exemple pour comprendre:
Le ping est fait avec un objet .NET. Il faut initialiser la variable $reponse avant de lui affecter le résultat du ping, sinon en cas d'échec de résolution du nom la variable contient le résultat du ping précédent, ce qui fausse complètement le reste du script.
L'analyse de l'adresse IP utilise une expression régulière pour isoler les deux premiers chiffres: "^d+.d+" correspond à un ou plusieurs chiffres ("d" pour "digit") suivis d'un point (".") suivi à nouveau d'un ou plusieurs chiffres, le tout en début de chaîne ("^"). Cette dernière précision s'avère à priori inutile mais je préfère être explicite, au cas où. Cette expression régulière est comparée à l'adresse IP du poste avec l'opérateur -match. Les résultats d'une comparaison faite avec -match sont toujours stockés dans la table $matches, et comme ici il ne peut y avoir qu'un résultat on le trouve dans $matches[0].
Voilà. Le reste relève de la procédure if ... else très classique et devrait se passer de commentaires. Je n'ai testé que très sommairement mais ça devrait pouvoir le faire.
Cela dit, les remarques de Gilles sur l'intérêt d'un pilotage des synchros depuis le serveur sont très justes. Des solutions initiées par les postes (avec toutes les précautions qui s'imposent) s'avèreraient à la fois plus simples, plus fiables et plus performantes.
Jacques
Merci bien pour ces quelques informations. Quand le temps me le permettra, je me jetterais dans le PowerShell, autant s'y mettre de suite.