用Python获取电脑端口连接的硬件获取到的数据
时间: 2024-02-13 21:00:35 浏览: 28
要获取电脑端口连接的硬件信息,你可以使用Python的socket模块和psutil模块。
首先,你需要使用socket模块获取当前电脑上所有的TCP连接信息。你可以使用下面的代码来实现:
```python
import socket
# 获取当前电脑上所有的TCP连接信息
def get_tcp_connections():
tcp_connections = []
for conn in psutil.net_connections(kind='tcp'):
if conn.status == psutil.CONN_ESTABLISHED:
laddr = "%s:%s" % (conn.laddr)
raddr = ""
if conn.raddr:
raddr = "%s:%s" % (conn.raddr)
tcp_connections.append((laddr, raddr))
return tcp_connections
```
接下来,你需要使用psutil模块来获取每个TCP连接对应的进程信息。你可以使用下面的代码来实现:
```python
import psutil
# 获取每个TCP连接对应的进程信息
def get_process_info(tcp_connections):
process_info = []
for conn in tcp_connections:
if conn[1]:
laddr, lport = conn[0].split(":")
raddr, rport = conn[1].split(":")
for p in psutil.process_iter(['pid', 'name']):
try:
for c in p.connections(kind='inet'):
if c.laddr.port == int(lport) and c.raddr and c.raddr.port == int(rport):
process_info.append((p.pid, p.name()))
except psutil.AccessDenied:
pass
return process_info
```
最后,你可以使用psutil模块来获取每个进程对应的打开的文件描述符信息。你可以使用下面的代码来实现:
```python
# 获取每个进程对应的打开的文件描述符信息
def get_fd_info(process_info):
fd_info = []
for p in process_info:
try:
for f in psutil.Process(p[0]).open_files():
fd_info.append((p[0], p[1], f.path))
except psutil.AccessDenied:
pass
return fd_info
```
这样,你就可以使用上述三个函数来获取电脑端口连接的硬件信息了。你可以使用下面的代码来测试:
```python
tcp_connections = get_tcp_connections()
process_info = get_process_info(tcp_connections)
fd_info = get_fd_info(process_info)
for fd in fd_info:
print(fd)
```
输出的结果将会是每个进程对应的打开的文件描述符信息。