python抓取网络信息_[原] Python 获取全部网络信息

该博客详细介绍了如何使用Python的psutil库获取网络信息,包括网络统计、网络地址、网络状态和连接详情。通过定义多个辅助函数,展示了如何计算和解析网络接口的详细信息,如协议、MAC地址、掩码、广播、MTU、连接状态等。
摘要由CSDN通过智能技术生成

# 获取网络信息

def netInfo():

"""

获取网络信息

:return:

"""

counter = psutil.net_io_counters()

netAddr = psutil.net_if_addrs()

netStat = psutil.net_if_stats()

connections = psutil.net_connections()

# 计算网络信息

def infoDetail(nets: list):

"""

计算网络信息

:param nets: list[snicaddr]

:return:

"""

# 计算指定网络信息

def item(net: psutil._common.snicaddr):

"""

计算指定网络信息

:param net: 指定网络

:return:

"""

return {

'协议': net.family.name,

'MAC': net.address,

'掩码': net.netmask,

'广播': net.broadcast,

'ptp': net.ptp

}

return [item(net) for net in nets]

# 计算网络信息

def statDetail(net: psutil._common.snicstats):

"""

计算网络信息

:param net: 指定网络

:return:

"""

return {

'isup': net.isup,

'双工': net.duplex,

'速率': net.speed,

'最大传输单位(字节)mtu(Maximum Transmission Unit)': net.mtu

}

# 计算一个连接详情

def connDetail(conn: psutil._common.sconn):

"""

计算一个连接详情

:param conn: 指定连接

:return:

"""

return {

'本地地址': conn.laddr[0],

'本地端口': conn.laddr[1],

'远程地址': conn.raddr[0] if 0 in conn.raddr else '',

'远程端口': conn.raddr[1] if 1 in conn.raddr else '',

'状态': conn.status,

'类型': conn.type,

'协议': conn.family.name,

'pid': conn.pid,

'fd': conn.fd

}

return {

'统计': {

'发字节': kmgt(counter.bytes_sent),

'收字节': kmgt(counter.bytes_recv),

'发包': kmgt(counter.packets_sent),

'收包': kmgt(counter.packets_recv),

'errin': counter.errin,

'errout': counter.errout,

'dropin': counter.dropin,

'dropout': counter.dropout

},

'网络地址': {k: infoDetail(netAddr[k]) for k in sorted(netAddr)},

'网络状态': {k: statDetail(netStat[k]) for k in sorted(netStat)},

'连接': [

connDetail(k)

for k in connections

]

}

* 以上 有些字段的含义没有弄明白,就用原来的英文表示了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值