ken*_*der 9 python sysadmin whois
我正在尝试启动并运行实际需要检查whois数据库的Web服务.我现在正在做的是丑陋的,我想尽可能地避免它:我调用gwhois命令并解析其输出.丑陋.
我做了一些搜索,试图找到一种pythonic方式来完成这项任务.一般来说,我什么都没有 - 这个旧的讨论列表链接有一种方法来检查域是否存在.不是我想要的......但是,谷歌给了我最好的东西 - 其他一切只是一堆未经证实的问题.
你们中的任何人都成功地启动并运行了一些方法吗?我非常感谢一些提示,或者我应该以开源方式,坐下来自己编写代码?:)
小智 8
看看这个:http: //code.google.com/p/pywhois/
pywhois - 用于检索域的WHOIS信息的Python模块
目标: - 创建一个简单的可导入Python模块,该模块将为给定域生成已解析的WHOIS数据. - 能够提取所有流行顶级域名(com,org,net,...)的数据 - 直接查询WHOIS服务器,而不是像许多其他人一样通过中间Web服务. - 适用于Python 2.4+,没有外部依赖
例:
>>> import pywhois
>>> w = pywhois.whois('google.com')
>>> w.expiration_date
['14-sep-2011']
>>> w.emails
['contact-admin@google.com',
'dns-admin@google.com',
'dns-admin@google.com',
'dns-admin@google.com']
>>> print w
...
Run Code Online (Sandbox Code Playgroud)
在我自己搜索python whois库的过程中发现了这个问题.
不知道我同意cdleary的答案,即使用包装命令的库总是最好的方法 - 但我可以看到他说这个的原因.
Pro:cmd-line whois处理所有的辛苦工作(套接字调用,解析等)
骗局:不便携; 模块可能无法工作,具体取决于底层whois命令.更慢,因为除了whois命令之外还运行命令并且很可能是shell.如果不是UNIX(Windows),不同的UNIX,较旧的UNIX或较旧的whois命令,则会受到影响
我正在寻找一个可以处理whois IP查找的whois模块,我对编写自己的whois客户端不感兴趣.
以下是我(轻松)尝试的模块以及有关它的更多信息:
pywhoisapi:
BulkWhois
pywhois:
蟒蛇的WHOIS:
whoisclient - python-whois的分支
更新:我最终使用pywhoisapi进行我正在进行的反向IP查找
使用命令行实用程序来执行您想要的操作没有任何问题.如果你在服务周围放置一个漂亮的包装器,你可以实现你想要的内部结构!例如:
class Whois(object):
_whois_by_query_cache = {}
def __init__(self, query):
"""Initializes the instance variables to defaults. See :meth:`lookup`
for details on how to submit the query."""
self.query = query
self.domain = None
# ... other fields.
def lookup(self):
"""Submits the `whois` query and stores results internally."""
# ... implementation
Run Code Online (Sandbox Code Playgroud)
现在,无论你是否使用urllib滚动自己,绕过命令行实用程序(就像你正在做的那样),或导入第三方库并使用它(就像你说的那样),这个界面保持不变.
这种方法通常不被认为是丑陋的 - 有时命令实用程序会按照您的要求执行,您应该能够利用它们.如果速度最终成为瓶颈,那么您的抽象使得切换到本机Python实现的过程对您的客户端代码是透明的.
实用性胜过纯洁 - 这就是Pythonic.:)