Im trying to retrieve the current iptables chains configured on the system via python. If I strace the iptables command, it outputs:
我试图通过python检索系统上配置的当前iptables链。如果我strace iptables命令,它输出:
strace iptables -L INPUT
socket(PF_INET, SOCK_RAW, IPPROTO_RAW) = 3
getsockopt(3, SOL_IP, 0x40 /* IP_??? */, "filter\0\377`\2\351\1\0\210\377\377\210}\313\276\0\210\377\377\354\206\0\201\377\377\377\377"..., [84]) = 0
full output here: http://pastebin.com/e7XEsaZV
完整输出:http://pastebin.com/e7XEsaZV
In python I create the socket obj and try to call getsockopt and it errors:
在python中我创建套接字obj并尝试调用getsockopt并且它出错:
>>> s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_RAW)
>>> s.getsockopt(socket.SOL_IP, 0x40)
Traceback (most recent call last):
File "<pyshell#46>", line 1, in <module>
s.getsockopt(socket.SOL_IP, 0x40)
File "/usr/lib/python2.7/socket.py", line 224, in meth
return getattr(self._sock,name)(*args)
error: [Errno 22] Invalid argument
>>>
>>> s = socket.socket(2, socket.SOCK_RAW, socket.IPPROTO_RAW)
>>> s.getsockopt(socket.SOL_IP, 0x41)
Traceback (most recent call last):
File "<pyshell#48>", line 1, in <module>
s.getsockopt(socket.SOL_IP, 0x41)
File "/usr/lib/python2.7/socket.py", line 224, in meth
return getattr(self._sock,name)(*args)
error: [Errno 22] Invalid argument
>>>
Is this just not possible?
这是不可能的吗?
1 个解决方案
#1
20
Have you seen python-iptables?
你见过python-iptables吗?
Python-iptables provides python bindings to iptables under Linux. Interoperability with iptables is achieved via using the iptables C libraries (libiptc, libxtables, and the iptables extensions), not calling the iptables binary and parsing its output.
Python-iptables在Linux下为iptables提供python绑定。通过使用iptables C库(libiptc,libxtables和iptables扩展)来实现与iptables的互操作性,而不是调用iptables二进制文件并解析其输出。
#1
20
Have you seen python-iptables?
你见过python-iptables吗?
Python-iptables provides python bindings to iptables under Linux. Interoperability with iptables is achieved via using the iptables C libraries (libiptc, libxtables, and the iptables extensions), not calling the iptables binary and parsing its output.
Python-iptables在Linux下为iptables提供python绑定。通过使用iptables C库(libiptc,libxtables和iptables扩展)来实现与iptables的互操作性,而不是调用iptables二进制文件并解析其输出。