我正在创建一个python 3工具,需要访问许多其他预先存在的网络工具,而有些人没有python库。
我已经尝试了subprocess.check_output
,但是,这些数据并不容易使用,我也不相信它支持grep
或awk
等管道命令如果两个命令都需要参数。
我希望能够在单独的线程上运行每个命令并存储输出,并停止输出命令,因为我将使用SSLStrip
,ArpSpoof
等工具,nmap
和其他人。直到终止为止。
最好的方法是什么?
答案 0 :(得分:0)
我建议使用subprocess
来构建适当的管道,就像在shell语法中一样。它只是得到了一点"语法和#34;。以下是如何在Python中调用ls | tr e E
的示例:
from subprocess import Popen, PIPE
ls = Popen([ 'ls' ], stdout=PIPE)
tr = Popen([ 'tr', 'e', 'E' ], stdin=ls.stdout, stdout=PIPE)
out, err = tr.communicate()
在此之后,out
将包含ls
的输出,其中e
已翻译为E
。
当然,使用这种方法可以完成更复杂的事情。