You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 06:15:44