8

我正在考虑制作一个需要从各种 aircrack-ng 套件工具发送输入和输出的程序。我知道一些 python 模块,例如 subprocess、envoy、sarge 和 pexpect,它们可以提供必要的功能。任何人都可以就我应该使用或不使用什么提供建议,特别是因为我是 python 新手。

谢谢

4

3 回答 3

13

作为 的维护者sarge,我可以告诉您,它的目标大致类似于envoy(在易用性方面subprocess),并且(IMO)在sarge以下方面具有更多功能:

  • 对类 bash 语法的跨平台支持(例如命令行中的&&, ||, )&
  • 更好地支持捕获subprocess输出流并异步处理它们
  • 更多文档,尤其是关于使用子进程的上下文中的线程+分叉等内部和外围问题
  • 支持防止外壳注入攻击

当然是 YMMV,但您可以查看文档,它们相当全面。

于 2012-06-14T11:32:00.387 回答
4

期待

在 2015 年,pexpect 不适用于 Windows。传闻下个版本会增加“实验性”支持,不过这已经是谣言很久了(我没有屏住呼吸)。

在使用 pexpect 编写了许多应用程序(并且喜欢它)之后,我现在很抱歉,因为我喜欢 python 的一件事(它是跨平台的)不适用于我的应用程序。

如果您打算暂时添加 Windows 支持,请避免使用 pexpect。

使者

去年活动不多。自 2012 年以来,很少有提交(总共 12 次)。对它的未来不太有希望。

在内部,它以与 Windows 路径不兼容的方式使用 shlex(命令必须使用“/”而不是“\”作为目录分隔符)。一种解决方法(使用 pathlib 时)是在将路径对象作为命令传递之前对路径对象调用as_posix() 。看到这个答案

访问内部流(即我想解析输出以获得一些更新滚动条),似乎是可能的,但没有记录。

中士

在开箱即用的 Windows 上工作,并且有一个 expect() 方法,该方法应该提供类似于 pexpect 的功能(允许我更新滚动条)。最近的活动,但它托管在gitlabbitbucket上(非常混乱)。

个人结论

我正在 pexpect 转变 sarge以谋求未来的发展。似乎提供了与 pexpect 类似的功能集并支持 windows。

于 2015-09-11T11:29:15.447 回答
2

subprocess - 是一个标准库模块,所以它可以在 python 安装中使用。但它有一个难以使用的名声,因为它的 api 不直观。

envoy - 是一个围绕子流程的第三方模块。它被编写为一个易于使用的替代子流程。特使 Kenneth Reitz 的作者以他的Python for Humans哲学而闻名。

其他两个我不熟悉。

于 2012-06-03T21:18:08.133 回答