Bonjour,

Je souhaite ajouter une nouvelle machine dans un fichier reverse de mon serveur DNS. Pour cela, j'utilise le module dnspython. Voici mon code:


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#!/usr/bin/python
# -*-coding:UTF-8 -*
 
import dns
from dns import *
import easyzone
from easyzone import easyzone
from dns.rdataclass import *
from dns.rdatatype import *
 
 
addr=raw_input('Entrer une adresse IP: ')
nom=raw_input('Entrer un nom de machine: ')
reverse=dns.reversename.from_address(addr)
print "Rev ", reverse
 
# Indiquer le chemin du fichier de zone + nom de domaine 
dzone=dns.zone.from_file('./named/test.zone','test.fr.')
 
# Indiquer le chemin du fichier gérant la zone inverse
zone=dns.zone.from_file('./revzone/194.254.135.0.revzone', '135.254.194.in-addr.arpa.')
 
rdataset = zone.find_rdataset(str(reverse), rdtype='PTR', create=True)
 
target = dns.name.Name((nom,))
orig = dns.name.Name(("lirmm.fr.",))
fullt= dns.name.Name.derelativize(target,dzone.origin)
#print "target ",target,fullt
rdata = dns.rdtypes.ANY.PTR.PTR(IN, PTR , fullt)
##print rdata
dd = dns.ttl.from_text('1w1d')
rdataset.add(rdata, ttl=dd )
##print rdataset.add(rdata, ttl=dd )
zone.to_file('./revzone/194.254.135.0.revzone', '135.254.194.in-addr.arpa.')
Au moment où, je passe la ligne "rdataset.add(rdata, ttl=dd )", il y a ce message d'erreur qui apparaît:

Traceback (most recent call last):
File "<pyshell#106>", line 1, in <module>
rdataset.add(rdata, ttl=None)
File "/usr/lib/python2.6/dist-packages/dns/rdataset.py", line 112, in add
raise IncompatibleTypes
IncompatibleTypes
D'après ce que j'ai lu, ce message s'affiche lorsque que l'argument rdclass est différent de rd.rdclass (ou rdtype != rd.rdtype). Je n'ai pas plus d'explication pour le moment.

Si quelqu'un a déjà rencontré cette erreur ou a une piste à me donner, elle est la bienvenue.