def is_akamaized(url):
stripped_http_url = url[8:]
clean_host = stripped_http_url.rsplit('/')[0]
nslookup_data = subprocess.call(["nslookup", clean_host], stdout=subprocess.PIPE)
if nslookup_data.find('akamaiedge'):
return "\033[1;31mEnvironment is Acamaized {0} - {1}\033[1;m"
这个函数只需要一个url并在其上运行nslookup。我想要发生的是我想获取nslookup的输出并通过它解析某些关键字。问题是,使用当前代码,如果我传入一个应该工作的URL(在nslookup中包含单词acamai)
print is_acamaized(url)
它返回0
注意,我添加了stdout = subprocess.PIPE,以便nslookup的整个输出不会返回给终端。
有关如何将nslookup的输出分配给变量的任何建议,以便我可以访问它吗?
答案 0 :(得分:2)
subprocess.call()
返回退出代码,而不是stdout。您可以直接使用Popen
课程:
nslookup_data = subprocess.Popen(["nslookup", clean_host], stdout=subprocess.PIPE).communicate()[0]
最后.communicate()[0]
很重要。这告诉Popen
我们已完成,并返回一个元组:(stdout
,stderr
)。元组[0]
中的第一项是标准输出。
您也可以使用subprocess.check_output()
:
nslookup_data = subprocess.check_output(["nslookup", clean_host])