Python子进程模块和PIPE

时间:2014-02-26 23:26:22

标签: python subprocess pipe

我有以下代码来检查CNAME的URL列表。等效的bash命令是“dig mail.yahoo.com | grep CNAME”

'hostname.txt'文件包含网址列表。

#!/usr/bin/python
from subprocess import Popen, PIPE
with open('hostname.txt') as hl:
    for host in hl:
            print host
            p1 = Popen(["dig", host], stdout=PIPE)
            p2 = Popen (["grep", "CNAME"], stdin=p1.stdout, stdout=PIPE)
            p1.stdout.close()
            output = p2.communicate()[0]

我从上面的python代码中得不到所需的输出。我低于输出。

$ python dev / cname_check.py

mail.yahoo.com

gmail.com

google.com

$

请让我知道我错过了什么。我从这里开始跟踪示例,http://docs.python.org/dev/library/subprocess.html#replacing-shell-pipeline

感谢。

1 个答案:

答案 0 :(得分:0)

您打印host但不打output,这就是您只看到列出的主机的原因。只需在最后添加print output ...