Передача выходного файла как cmd в подпроцесс Python - PullRequest
0 голосов
/ 01 октября 2019

Я пытался выполнить две команды cmd с использованием подпроцесса python, но застрял в оптимизации кода и передаче выходного файла в качестве ввода в cmd. Мои две команды выглядят так, как показано ниже

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

В идеале я хочу записать накопленный выводк файлу и затем добавить вывод подфинджера в тот же файл. Для этого я пишу ниже код


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

Что я делаю здесь неправильно? и могу ли я сделать что-то лучше, чем позвонить process1.wait(). Я заметил, что это займет гораздо больше времени, чем я ожидал.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...