dnspython fera très bien mes recherches DNS, mais il ignore entièrement le contenu de /etc/hosts
.
Existe-t-il un appel de bibliothèque python qui fera la bonne chose? c'est-à-dire vérifier d'abord etc/hosts
, et ne revenir qu'aux recherches DNS sinon?
socket.gethostbyname
directes simples, utilisez la proposition , pour des requêtes plus complexes, utilisez dnspython.Réponses:
Je ne sais pas vraiment si vous voulez faire des recherches DNS vous - même ou si vous voulez simplement l'IP d'un hôte. Au cas où vous voudriez ce dernier,
la source
nscd
etnslcd
sur les boîtes Unix peut le faire. Il pourrait également être mis en cache par un serveur de noms local configuré pour la mise en cache (une configuration courante, il était une fois. Probablement pas tellement maintenant). Ce n'est pas une réponse directe «non», malheureusement. Ces choses le sont rarement. :)La résolution de nom normale en Python fonctionne correctement. Pourquoi avez-vous besoin de DNSpython pour cela. Il suffit d' utiliser la prise « s
getaddrinfo
qui suit les règles configurées pour votre système d'exploitation (sur Debian, il suit/etc/nsswitch.conf
:la source
addrs = [ str(i[4][0]) for i in socket.getaddrinfo(name, 80) ]
me donne la liste des ips.vous donne une liste des adresses pour www.example.com. (ipv4 et ipv6)
la source
Ce code fonctionne bien pour renvoyer toutes les adresses IP qui pourraient appartenir à un URI particulier. Étant donné que de nombreux systèmes se trouvent désormais dans un environnement hébergé (AWS / Akamai / etc.), les systèmes peuvent renvoyer plusieurs adresses IP. Le lambda a été "emprunté" à @Peter Silva.
la source
La réponse ci-dessus était destinée à Python 2. Si vous utilisez Python 3, voici le code.
la source
J'ai trouvé cette façon d'étendre un nom d'hôte DNS RR qui se développe dans une liste d'adresses IP, dans la liste des noms d'hôte des membres:
Qui, lorsque je l'exécute, répertorie quelques noms d'hôte 1e100.net:
la source