2010-08-10 15 views
1

J'essaie d'obtenir whois en python. J'utilise ce http://code.google.com/p/pywhois/ mais il fonctionne uniquement sous Linux. Est-il possible de l'exécuter sur Windows? actuellement je reçois des erreurs (car la commande linux interne whois utilisé)python whois pour windows

+0

J'ai trouvé ce lien, je ne sais pas à quel point ce sera utile, mais il traite du DNS inversé, qui apparemment, selon un utilisateur, est plus fiable que whois de toute façon: http://bytes.com/topic/python/answers/ 46509-whois-like-functional-windows – rownage

+0

C'est faux, whois et DNS sont pour des choses différentes. Vous pouvez obtenir le serveur de noms à partir de DNS, où whois ne fournit essentiellement qu'une version non autorisée de la même information. Sinon, ils servent à des fins différentes et contiennent différentes sortes d'informations et répondent à des besoins différents. – tripleee

Répondre

5

Sur Windows comme sur Linux, pywhois donne une erreur si le programme whois n'est pas installé. Vous pouvez essayer this whois, par exemple.

La raison, bien sûr, est en pywhois/init.py, ligne 11:

r = subprocess.Popen(['whois', domain], stdout=subprocess.PIPE) 

Il est clair que cette ligne a besoin pour exécuter PRÉEXISTANTES, installé whois programme de ligne de commande (qui accepte le domaine de regarder comme une ligne de commande argument), quel que soit le système d'exploitation sur lequel il s'exécute.

+0

thnx Alex! Ça marche! – Evg

+0

Il ne devrait pas être difficile de remplacer cela par une implémentation pure-Python, cependant. Fondamentalement 'telnet whois.internic.net 43' et requête pour le domaine que vous voulez, puis suivez le lien qu'il vous donne. Astuce: '= google.com' fonctionne mieux que' google.com' mais il reste encore beaucoup de paillettes à trier. – tripleee

1

Vous pouvez utiliser:

os.system("whois %s" % hostname) 

Ou utilisez pour vous connecter urllibhttp://www.whois.net et le contenu de la ferraille.

+0

S'il vous plaît nous 'subprocess.Popen' au lieu de' os.system' –

+0

votre première suggestion (avec 'subprocess', pas' os.system') est exactement ce que 'pywhois' utilise (sur n'importe quel OS - voir mon A avec un une seule ligne citée des sources de pywhois), avec un bon post-traitement pour analyser les résultats et les rendre plus utilisables. Vous avez juste besoin d'un 'whois 'installé et fonctionnant correctement - si votre première suggestion fonctionne, il en sera de même pour' pywhois'! -) –

+0

@ S.Lott Pourquoi pas, mais pourriez-vous expliquer pourquoi? –