如何打印公共网络接口名称?

2024-06-15 20:09:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我想知道我的centos机箱上的哪个接口是公共的。我使用以下代码获取所有接口的列表:

import psutil
psutil.net_io_counters(pernic=True)

它给我的输出如下:-

{'ens4': snetio(bytes_sent=451795206850898, bytes_recv=282993376354381, packets_sent=2467559041353, packets_recv=1909886336553, errin=0, errout=0, dropin=0, dropout=0), 

'ens5': snetio(bytes_sent=686206758798, bytes_recv=468470603173, packets_sent=1233102227, packets_recv=1545708349, errin=0, errout=0, dropin=0, dropout=0), 

'lo': snetio(bytes_sent=23027715005, bytes_recv=23027715005, packets_sent=44148705, packets_recv=44148705, errin=0, errout=0, dropin=0, dropout=0)}

我想知道哪一个是公共的,哪一个是私人的:

这里我知道ens4是公共的,ens5是私有的,lo是环回

我如何使用python实现这一点

现在,我正在使用一个bash命令,该命令将为我提供以下输出:

ip -o addr show scope global | awk '{split($4, a, "/"); print $2" : "a[1]}' | grep -v -E '192\.168|10\.|172\.1[6789]\.|172\.2[0-9]\.|172\.3[01]' | awk '{print $1'}

输出:

ens4

如何将bash命令转换为python中的内容


Tags: 命令bashlobytesdropoutpsutilsentpackets
1条回答
网友
1楼 · 发布于 2024-06-15 20:09:35

一种解决方案是,使用操作系统调用命令:

import os
os.system('ip -o addr show scope global | awk \'{split($4, a, "/"); print $2" : "a[1]}\' | grep -v -E \'192\\.168|10\\.|172\\.1[6789]\\.|172\\.2[0-9]\\.|172\\.3[01]\' | awk \'{print $1\'}')

相关问题 更多 >