如何在Python中正确执行host或dig命令

0 投票
1 回答
1058 浏览
提问于 2025-04-18 10:43

我想用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

撰写回答