在我的python软件中使用编译的程序作为输入

时间:2017-10-24 19:12:00

标签: python tshark

我看过不同的软件使用编译的程序作为"模块&#34 ;;一个例子是使用aircrack套件的wifite。

同样,我需要在我的python程序中实现tshark,但不需要通过源代码工作(主要是因为我希望软件是模块化的并且将tshark留作简单的依赖)。 / p>

最好的方法是什么?我不会简单地打电话给程序,因为我觉得它不是pythonic。

2 个答案:

答案 0 :(得分:2)

出于您的目的,您可以使用tshark周围的现有包装器之一,例如KimiNewt/pyshark

在其他情况下,您可能需要将该工具重新编译为库,然后为其提供绑定以在Python中使用。更多关于documentation的内容。

答案 1 :(得分:2)

一般而言,标准UNIX程序提供的通用API包括:

  • 启动该程序的参数向量(一个C字符串数组,由shell生成或直接传递给subprocess模块)。
  • 当启动该进程时,文件描述符作为FD 0,1和2(stdin,stdout和stderr)传递(可以使用其他文件描述符,但只有这三个是标准API的一部分)。
  • 启动时由该程序继承的一组环境变量。
  • 各种其他继承的进程状态,例如程序的当前工作目录。

传统上,UNIX程序通过这些方式相互通信 - 从stdin读取输入(除非在命令行中另有指定),写入stdout,登录到stderr等。

某些程序可能提供库接口或基于套接字的接口,但这些只能根据具体情况提供

如果 尝试与用C语言编写的提供库接口的软件进行交互,请参阅the ctypes standard-library module