如何使用Python subprocess模块在Linux中运行ffuf工具并获取输出
使用subprocess执行ffuf命令并获取输出
直接用subprocess.run()就能实现,它是subprocess模块里最常用的方法,适合执行终端命令并处理输出。以下是对应你ffuf命令的代码:
import subprocess def run_ffuf(): # 定义要执行的ffuf命令,拆分成列表形式(每个参数为一个元素) ffuf_cmd = [ "ffuf", "-c", "-w", "/path/of/textfile/as/input", "-u", "some_argument" ] try: # 执行命令,捕获标准输出和标准错误,设置编码为utf-8 result = subprocess.run( ffuf_cmd, capture_output=True, text=True, check=True ) # 打印命令的标准输出 print("ffuf执行结果:") print(result.stdout) except subprocess.CalledProcessError as e: # 如果命令执行出错,打印错误信息 print("命令执行失败:") print(e.stderr) if __name__ == "__main__": run_ffuf()
关键参数解释
capture_output=True:捕获命令的标准输出和标准错误text=True:把输出内容转换成字符串(而非字节流),方便直接打印check=True:如果命令执行返回非0状态码(即出错),会抛出CalledProcessError异常- 命令拆分成列表形式:这是subprocess推荐的写法,避免shell注入风险,也不需要设置
shell=True
另一种贴近终端直接运行的方式(启用shell)
如果你想完全模拟终端输入命令的方式,可以设置shell=True,但这种方式存在安全风险(如果参数来自不可信输入),代码如下:
import subprocess try: # 直接用字符串形式写命令,设置shell=True result = subprocess.run( "ffuf -c -w /path/of/textfile/as/input -u some_argument", shell=True, capture_output=True, text=True, check=True ) print(result.stdout) except subprocess.CalledProcessError as e: print(e.stderr)
注意事项
- 确保Python环境能找到ffuf命令,或者把ffuf的完整路径(比如
/usr/bin/ffuf)写进命令里 - 上述代码会等ffuf执行完毕后再输出结果;如果需要实时输出,可以调整参数配合循环读取,但对于获取最终输出的需求,上面的方式已经足够
内容的提问来源于stack exchange,提问作者shiva M
相关产品推荐
相关产品推荐

