在python子进程中以cmd形式传递输出文件

2024-10-04 05:32:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在尝试使用python子流程执行两个cmd命令,但一直在优化代码并将outputfile作为输入传递到cmd中

amass enum -d example.com
subfinder -d example.com -o outputfile.txt  (where -o flag writes output in txt file)

理想情况下,我希望将聚合输出写入文件,然后将subfinder输出附加到我在下面编写的代码的同一个文件中


import subprocess

def gathersubdomain(domainname):
    subdomainoutputs = open('amassoutput.txt','a')
    processlogs=open('processlogs.txt','a')
    amassscmd=[
        'amass','enum','-d',domainname
        ]

    subfindercmd=[
        'subfinder','-d',domainname,'-o',subdomainoutputs
        ]    

    process1 =  subprocess.Popen(amassscmd,stdout=subdomainoutputs,stderr=processlogs)
    process2 =  subprocess.Popen(subfindercmd,stdout=subprocess.PIPE,stderr=processlogs)
    output=process2.stdout.read
    return process1.wait()



gathersubdomain('example.com');    


在运行上述代码时,我得到以下错误

Traceback (most recent call last):
  File "subdomainenumeration.py", line 22, in <module>
    gathersubdomain('haufe.io');    
  File "subdomainenumeration.py", line 16, in gathersubdomain
    process2 =  subprocess.Popen(subfindercmd,stdout=subprocess.PIPE,stderr=processlogs)
  File "/usr/lib/python2.7/subprocess.py", line 711, in __init__
    errread, errwrite)
  File "/usr/lib/python2.7/subprocess.py", line 1343, in _execute_child
    raise child_exception
TypeError: execv() arg 2 must contain only strings

我做错了什么?我能做些比打电话更好的事吗。我注意到这比我预期的要花更长的时间


Tags: 代码inpytxtcomexamplestdoutline