Question Synchronisation de 2 DNS - Résolu

Plus d'informations
il y a 17 ans 5 mois #2863 par PASCAULT
Réponse de PASCAULT sur le sujet Re:Synchronisation de 2 DNS
Bonjour Camille,

L'idéal aurait été que tu puisses nous mettre le résultat réél de tes fichiers obtenu par dnscmd et nslookup, ou encore la cmd effectuée avec ces outils. C'est toujours un peu plus délicat de traiter du texte.
Le problème en plus avec le résultat de ces commandes, c'est que parfois, les espaces sont remplacés par des caractères spéciaux. ( ex les espaces obtenus entre les champs avec dnscmd sont parfois code ascii 0x09 parfois 0x20(space) )
Tu peux alors supprimer ces espaces avec ltrim par ex en utilisant comme caractère [char]0x09

En passant par un fichier csv, pourquoi pas, mais la problèmatique reste la même, il faut que tu spécifies le caractère de séparation.

Le plus simple, peut-être serait peut-être d'utiliser les expressions régulières.
en imaginant une ligne du style

[code:1]$ligne=\" domaine.ext. A 10.100.100.100\"
$dnstest -cmatch '(\w+.\w*.*)\s+(A)\s+(\d+.\d+.\d+.\d+)'
#Résultat du match
$matches
#Extraction du résultat
$ip=$matches[3]
$type=$matches[2]
$Nom=$matches[1]
[/code:1]
Cette expression régulière devrait \"matcher\" seulement les lignes dns contenant un type d'hôte A et récupérer un nom dns de type nomdom.dom. ou dom.
Il faudra peut-être adapter la partie

(\w+.\w*.*)


La synchro de tes dns ne doit se faire que dans un sens, c'est ça ? Tu veux récupérer les nouveaux hôtes de ton dns externes vers ton interne seulement ?

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 17 ans 5 mois #2864 par PASCAULT
Réponse de PASCAULT sur le sujet Re:Synchronisation de 2 DNS
Bonjour Camille,

L'idéal aurait été que tu puisses nous mettre le résultat réél de tes fichiers obtenu par dnscmd et nslookup, ou encore la cmd effectuée avec ces outils. C'est toujours un peu plus délicat de traiter du texte.
Le problème en plus avec le résultat de ces commandes, c'est que parfois, les espaces sont remplacés par des caractères spéciaux. ( ex les espaces obtenus entre les champs avec dnscmd sont parfois code ascii 0x09 parfois 0x20(space) )
Tu peux alors supprimer ces espaces avec ltrim par ex en utilisant comme caractère [char]0x09

En passant par un fichier csv, pourquoi pas, mais la problèmatique reste la même, il faut que tu spécifies le caractère de séparation.

Le plus simple, peut-être serait peut-être d'utiliser les expressions régulières.
en imaginant une ligne du style

[code:1]$ligne=\" domaine.ext. A 10.100.100.100\"
$dnstest -cmatch '(\w+.\w*.*)\s+(A)\s+(\d+.\d+.\d+.\d+)'
#Résultat du match
$matches
#Extraction du résultat
$ip=$matches[3]
$type=$matches[2]
$Nom=$matches[1]
[/code:1]
Cette expression régulière devrait \"matcher\" seulement les lignes dns contenant un type d'hôte A et récupérer un nom dns de type nomdom.dom. ou dom.
Il faudra peut-être adapter la partie

(\w+.\w*.*)


La synchro de tes dns ne doit se faire que dans un sens, c'est ça ? Tu veux récupérer les nouveaux hôtes de ton dns externes vers ton interne seulement ?

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 17 ans 5 mois #2867 par bordin
Réponse de bordin sur le sujet Re:Synchronisation de 2 DNS
salut,
je me doutais un peu qu'il fallait passer par des expressions régulières. Mais je n'en suis pas fan, bien que je reconnaisse la puissance du truc!!!:S
Faut que je me mette au regex!
je vais essayer de voir ce que çà donne avec tes conceils!

Cela dit oui, la synchro dns est dans un seul sens!!

Merci!

La pièce jointe HotesInternetDif.txt est absente ou indisponible

Pièces jointes :

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 17 ans 5 mois #2868 par PASCAULT
Réponse de PASCAULT sur le sujet Re:Synchronisation de 2 DNS
Bonjour Camille,

Oui, je suis d'accord avec toi, les expressions régulières, ce n'est pas toujours évident de s'y mettre au début, même si l'on reconnait que c'est puissant.

J'ai testé ton fichier résultat avec le bout de code que je t'avais mis hier, et cela semble pas trop mal coller.

[code:1]
$dns=gc C:\temp\HotesInternetDif.txt
foreach ($ligne in $dns)
{
$ligne -cmatch '(\w+.\w*.*)\s+(A)\s+(\d+.\d+.\d+.\d+)'
$ip=$matches[3].Trim()
$type=$matches[2].Trim()
$Nom=$matches[1].Trim()
Write-Host $nom - $type - $ip
}[/code:1]

Sans passer par les expressions régulières, tu pourrais peut-être utilisé la méthode split() pour chaque ligne...

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 17 ans 5 mois #2874 par bordin
Réponse de bordin sur le sujet Re:Synchronisation de 2 DNS
Bonjour,
En fait j'avais commencé à écrire une regex qui se rapproche de ce que tu viens de donner!!!
Je voudrai créer un 1er niveau de filtrage pour me retourner que les lignes au format:
Cas1: Hote TypeHote AdressIpHote
Cas2: Hote TTL TypeHote AdressIpHote
Sa permet de nettoyer les fichiers de tous ce qui est inutile!
$filtre='\w\W+\w\W+\d.'

Est ce que tu peux m'expliquer
'(\w+.\w*.*)\s+(A)\s+(\d+.\d+.\d+.\d+)' stp?

Merci!

cdt

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 17 ans 5 mois #2875 par Laurent Dardenne
Salut,
gremlinsy écrit:

Sans passer par les expressions régulières, tu pourrais peut-être utilisé la méthode split() pour chaque ligne...

Pour ce cas présent c'est possible:
[code:1]
[String[]] $Delimiters=@(' ',\"`t\",\"server = \"«»)
$a=${c:\temp\HotesInternetDif.txt}
$Hotes=$a|select -last $($a.count-2)|% {
$Item=$_.split($Delimiters,[StringSplitOptions]::RemoveEmptyEntries);
New-Object PSObject|`
Add-member NoteProperty DNS $Item[0] -Pass|`
Add-member NoteProperty Type $Item[1] -Pass|`
Add-member NoteProperty Server $Item[2] -Pass
}
$Hotes
[/code:1]
[code:1]

DNS Type Server
--- ----
MonNom.com. A xxx.x.xxx.x
...
[/code:1]
Voir aussi :
www.microsoft.com/technet/scriptcenter/topics/msh/payette1.mspx

technet.microsoft.com/fr-fr/magazine/cc743166.aspx

blogs.msdn.com/powershell/archive/2008/0...-not-a-contract.aspx

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.059 secondes
Propulsé par Kunena