如何在Python中正确执行host或dig命令
我想用Python处理host或dig命令,来检查一个域名是否被列入黑名单。我使用了这些命令:
surbl_result = os.system(host_str + ".multi.surbl.org")
#this works like performing a terminal command which is host johnnydeppsource.com.multi.surbl.org
这些命令会返回一个整数,0表示这个域名在黑名单上,256表示它不在黑名单上。
if surbl_result == 0: #blacklisted in surbl
black_list = True
但是有时候,host命令会失败,返回一个服务器失败的响应。
Host johnnydeppsource.com.multi.surbl.org not found: 2(SERVFAIL)
这时它会返回一个零值,这样即使域名在黑名单上也能允许添加新域名。有没有其他方法可以做到这一点?这个功能是在我的django 1.6应用程序中实现的。任何建议都很有帮助。
1 个回答
1
os.system(command) 会在一个子shell中执行命令,并返回执行后的状态(一个字符串)。
更好的使用方式如下:
from subprocess import Popen, PIPE
subproc = Popen(host_str + ".multi.surbl.org", stdout=PIPE, shell=True)
output, errorCode = subproc.communicate()
if errorCode == None:
black_list = True