【问题标题】:How to get all the Network connections going through the computer (linux) using python如何使用python让所有网络连接通过计算机(linux)
【发布时间】:2018-04-16 13:38:30
【问题描述】:

好的,我已经知道这个问题会吸引很多反对票,但是我迫切希望得到答案。我正在尝试在我的 Linux 机器上使用它们的 IP 以及希望程序名称启动连接的所有网络连接“回家”。我浏览了psutils 文档,但没有找到任何有用的东西。我继续阅读Sockets 文档,并尽我所能理解发生了什么。我没有找到解决方案。

简短
我正在尝试获取我系统上所有连接到互联网的程序的列表,有点像防火墙,但我很好奇你会怎么做用 python 来做,没有明显使用 os.system()。

【问题讨论】:

  • 您的问题还不清楚。主机会将发往不同网络的所有流量发送到其配置的网关,因此您可以修改主机网关配置以指向一台计算机。如果流量的目的地是同一个网络,那么您无能为力,因为流量是直接从 LAN 上的主机到主机传递的。这将需要 LAN 上每个可能的主机的永久 ARP 表条目,以指向计算机的 MAC 地址。
  • 我正在尝试获取系统上连接到互联网的所有程序的列表,有点像防火墙,但我很好奇你会如何用 python 来做,没有明显使用os.system()。 @RonMaupin

标签: python networking psutil


【解决方案1】:

这是一个关于如何在 Python 的“out”变量中获取所有网络连接的示例:

import subprocess

proc = subprocess.Popen(["lsof -i"], stdout=subprocess.PIPE, shell=True)
out, err = proc.communicate()
print ("network connections output:")
print (out)

之后,您需要处理结果并提取您想要的内容。 也请阅读更多关于 lsof here

【讨论】:

    猜你喜欢
    • 2017-05-08
    • 1970-01-01
    • 2015-05-17
    • 1970-01-01
    • 1970-01-01
    • 2013-08-26
    • 1970-01-01
    • 1970-01-01
    • 2011-09-12
    相关资源
    最近更新 更多