如何使用 python 的 pynetfilter_conntrack 库
how to use pynetfilter_conntrack library of python
我正在尝试编写一个 python 程序来列出已建立的 TCP 连接。我找到了 pynetfilter_conntrack 模块。我已经使用 pip install pynetfilter_conntrack
安装了。导入库时出现如下错误
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python2.7/dist-packages/pynetfilter_conntrack/__init__.py", line 4, in <module>
from pynetfilter_conntrack.func import *
File "/usr/local/lib/python2.7/dist-packages/pynetfilter_conntrack/func.py", line 6, in <module>
library = cdll.LoadLibrary("libnetfilter_conntrack.so.1")
File "/usr/lib/python2.7/ctypes/__init__.py", line 443, in LoadLibrary
return self._dlltype(name)
File "/usr/lib/python2.7/ctypes/__init__.py", line 365, in __init__
self._handle = _dlopen(self._name, mode)
OSError: libnetfilter_conntrack.so.1: cannot open shared object file: No such file or directory
并使用命令修复
sudo ln -s /usr/lib/libnetfilter_conntrack.so.3.1.3 /usr/lib/libnetfilter_conntrack.so.1
我进行了搜索,但找不到有关如何将其与某些示例程序一起使用的文档。此外,它的 wiki 站点目前已关闭。
http://software.inl.fr/trac/trac.cgi/wiki/pynetfilter_conntrack.
网页已关闭 due the finishing of sponsored development. But there is a new maintainer github 试图阻止库的最终死亡。
正如我所看到的,这个 repo (0.5) 版本目前正在开发中,但是有一个 example 这将给你使用甚至 0.4.2 版本的关键想法。
from netifaces AF_INET
import pynetfilter_conntrack
# Print source ip, port and sent bytes
ct = pynetfilter_conntrack.Conntrack()
for item in ct.dump_table(AF_INET):
print item.orig_ipv4_src, item.orig_port_src, item.repl_counter_bytes
Alexander 的回答真的很有帮助。但不幸的是,这对我不起作用。所以,我用谷歌搜索并修改了上面的代码(可能是 pynetfilter_conntrack
的不同版本)。
import netifaces
import pynetfilter_conntrack
# Print source ip, port and sent bytes
ct = pynetfilter_conntrack.Conntrack()
'''
ct.dump_table(netifaces.AF_INET)--> returns the 2 values of tuple. one is list of objects and another is number of connections I guess. So the bellow change
'''
for item in ct.dump_table(netifaces.AF_INET)[0]:
print item.orig_ipv4_src, item.orig_port_src, item.repl_counter_bytes
谢谢!
我正在尝试编写一个 python 程序来列出已建立的 TCP 连接。我找到了 pynetfilter_conntrack 模块。我已经使用 pip install pynetfilter_conntrack
安装了。导入库时出现如下错误
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python2.7/dist-packages/pynetfilter_conntrack/__init__.py", line 4, in <module>
from pynetfilter_conntrack.func import *
File "/usr/local/lib/python2.7/dist-packages/pynetfilter_conntrack/func.py", line 6, in <module>
library = cdll.LoadLibrary("libnetfilter_conntrack.so.1")
File "/usr/lib/python2.7/ctypes/__init__.py", line 443, in LoadLibrary
return self._dlltype(name)
File "/usr/lib/python2.7/ctypes/__init__.py", line 365, in __init__
self._handle = _dlopen(self._name, mode)
OSError: libnetfilter_conntrack.so.1: cannot open shared object file: No such file or directory
并使用命令修复
sudo ln -s /usr/lib/libnetfilter_conntrack.so.3.1.3 /usr/lib/libnetfilter_conntrack.so.1
我进行了搜索,但找不到有关如何将其与某些示例程序一起使用的文档。此外,它的 wiki 站点目前已关闭。
http://software.inl.fr/trac/trac.cgi/wiki/pynetfilter_conntrack.
网页已关闭 due the finishing of sponsored development. But there is a new maintainer github 试图阻止库的最终死亡。
正如我所看到的,这个 repo (0.5) 版本目前正在开发中,但是有一个 example 这将给你使用甚至 0.4.2 版本的关键想法。
from netifaces AF_INET
import pynetfilter_conntrack
# Print source ip, port and sent bytes
ct = pynetfilter_conntrack.Conntrack()
for item in ct.dump_table(AF_INET):
print item.orig_ipv4_src, item.orig_port_src, item.repl_counter_bytes
Alexander 的回答真的很有帮助。但不幸的是,这对我不起作用。所以,我用谷歌搜索并修改了上面的代码(可能是 pynetfilter_conntrack
的不同版本)。
import netifaces
import pynetfilter_conntrack
# Print source ip, port and sent bytes
ct = pynetfilter_conntrack.Conntrack()
'''
ct.dump_table(netifaces.AF_INET)--> returns the 2 values of tuple. one is list of objects and another is number of connections I guess. So the bellow change
'''
for item in ct.dump_table(netifaces.AF_INET)[0]:
print item.orig_ipv4_src, item.orig_port_src, item.repl_counter_bytes
谢谢!