我正在考虑制作一个需要发送输入并从各种aircrack-ng套件工具中获取输出的程序。我知道几个python模块,如subprocess,envoy,sarge和pexpect,它们将提供必要的功能。任何人都可以建议我应该使用或不使用,特别是因为我是python的新手。
由于
答案 0 :(得分:13)
作为sarge
的维护者,我可以告诉你,它的目标与envoy
大致相似(就subprocess
的易用性而言)而且(IMO)更多sarge
中有关以下内容的功能:
&&
,||
,&
)subprocess
输出流并异步使用它们当然是YMMV,但你可以查看the docs,它们相当全面。
答案 1 :(得分:3)
2015年,pexpect无法在Windows上运行。传闻加上“实验性”支持in the next version,但这已成为很长一段时间的谣言(我没有屏住呼吸)。
使用pexpect编写了许多应用程序(并且喜欢它),我现在很抱歉,因为我喜欢python(它是跨平台)的一件事情对我的应用程序来说并不适用。
如果您计划永远添加Windows支持,请暂时避免使用。
去年活动不多。自2012年以来很少提交(总共12个)。对其未来不太有希望。
在内部,它以与Windows路径不兼容的方式使用shlex(命令必须使用'/'而不是'\'用于目录分隔符)。解决方法(使用pathlib时)是在路径对象上作为命令传递之前调用as_posix()。请参阅this answer。
访问内部流(即我想解析输出以获得一些更新滚动条)似乎是可能的,但没有记录。
在开箱即用的Windows上运行,并且有一个expect()方法,它应该提供类似于pexpect的功能(允许我更新滚动条)。最近的活动,但它托管在gitlab和bitbucket上(非常令人困惑)。
我正在将从 pexpect 移动到 sarge 以供将来开发。似乎为pexpect提供了类似的功能集并支持windows。
答案 2 :(得分:2)
subprocess - 是一个标准的库模块,所以它可以在python安装时使用。但它具有难以使用的声誉,因为它的api不直观。
envoy - 是一个包装子进程的第三方模块。它被编写为一个易于使用的替代子进程。特使Kenneth Reitz的作者以他的Python for Humans哲学而闻名。
我不熟悉其他两个。