网络连接信息

psutil.net_connections(kind='inet') - 原文

以命名元组列表的形式返回系统范围的套接字连接。 每个命名元组提供 7 个属性:

  • fd: 套接字文件描述符。 如果连接指向当前进程,则可以将其传递给 socket.fromfd 以获得可用的套接字对象。 在 Windows 和 SunOS 上,这始终设置为 -1
  • family: 地址族,AF_INETAF_INET6AF_UNIX
  • type: 地址类型,SOCK_STREAMSOCK_DGRAMSOCK_SEQPACKET
  • laddr: 在 AF_UNIX 套接字的情况下,本地地址作为(ip, port)命名元组或路径(path)。 对于 UNIX 套接字,请参阅下面的注释。
  • raddr: 在 AF_UNIX 套接字的情况下,远程地址作为(ip, port)命名元组或绝对路径(path)。当远程端点未连接时,您将获得一个空元组 (AF_INET*) 或 "" (AF_UNIX)。 对于 UNIX 套接字,请参阅下面的注释。
  • status: 表示 TCP 连接的状态。 返回值是 psutil.CONN_* 常量之一(字符串)。 对于 UDP 和 UNIX 套接字,这始终是 psutil.CONN_NONE
  • pid: 如果可检索打开套接字的进程的PID,否则为None。 在某些平台(例如 Linux)上,此字段的可用性根据进程权限(需要 root)而变化。

kind 参数是一个字符串,用于过滤符合以下条件的连接:

Kind 值连接使用
"inet"IPv4 和 IPv6
"inet4"IPv4
"inet6"IPv6
"tcp"TCP
"tcp4"基于 IPv4 的 TCP
"tcp6"基于 IPv6 的 TCP
"udp"UDP
"udp4"基于 IPv4 的 UDP
"udp6"基于 IPv6 的 UDP
"unix"UNIX 套接字(UDP 和 TCP 协议)
"all"所有可能的族和协议的总和

在 macOS 和 AIX 上,此功能需要 root 权限。 要获得每个进程的连接,请使用 Process.connections()。 另请参阅 netstat.py 示例脚本。 例子:

>>> import psutil
>>> psutil.net_connections()
[pconn(fd=115, family=<AddressFamily.AF_INET: 2>, type=<SocketType.SOCK_STREAM: 1>, laddr=addr(ip='10.0.0.1', port=48776), raddr=addr(ip='93.186.135.91', port=80), status='ESTABLISHED', pid=1254),
 pconn(fd=117, family=<AddressFamily.AF_INET: 2>, type=<SocketType.SOCK_STREAM: 1>, laddr=addr(ip='10.0.0.1', port=43761), raddr=addr(ip='72.14.234.100', port=80), status='CLOSING', pid=2987),
 pconn(fd=-1, family=<AddressFamily.AF_INET: 2>, type=<SocketType.SOCK_STREAM: 1>, laddr=addr(ip='10.0.0.1', port=60759), raddr=addr(ip='72.14.234.104', port=80), status='ESTABLISHED', pid=None),
 pconn(fd=-1, family=<AddressFamily.AF_INET: 2>, type=<SocketType.SOCK_STREAM: 1>, laddr=addr(ip='10.0.0.1', port=51314), raddr=addr(ip='72.14.234.83', port=443), status='SYN_SENT', pid=None)
 ...]

注释: (macOS 和 AIX) 除非以 root 用户身份运行,否则 psutil.AccessDenied 异常总是会抛出。 这是操作系统的限制,lsof 也是如此。

注释: (Solaris) 不支持 UNIX 套接字。

注释: (Linux, FreeBSD) UNIX 套接字的“raddr”字段始终设置为“”。 这是操作系统的限制。

注释: (OpenBSD) UNIX 套接字的“laddr”和“raddr”字段始终设置为“”。 这是操作系统的限制。

2.1.0 版本中新增.

5.3.0 版本中修改: : 套接字“fd”现在设置为实数而不是 -1

5.3.0 版本中修改: : “laddr”和“raddr”被命名为元组。