繁体   English   中英

如何打印 public.network 接口名称?

[英]How to print public network interface names?

我想知道我的centos盒子上哪个接口是公用的。 我正在使用以下代码获取所有接口的列表:

import psutil
psutil.net_io_counters(pernic=True)

它给了我一个 output,如下所示:-

{'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 命令,该命令提供 output:

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'}

Output:

ens4

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

一种解决方案是,使用 os 调用命令:

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\'}')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM