"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
"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
"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
"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
"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
"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
"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:
PS> $nom, $prenom = "lampion;seraphin".split(";")
PS> $nom
lampion
PS> $prenom
seraphin
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:
PS> $nom, $prenom = "lampion;seraphin".split(";")
PS> $nom
lampion
PS> $prenom
seraphin
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" 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:
PS> $nom, $prenom = "lampion;seraphin".split(";")
PS> $nom
lampion
PS> $prenom
seraphin
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