Python网络管理
来自CloudWiki
安装包
pip3 install psutil
监控网络信息
获得本机IP
>>> import socket >>> hostname = socket.gethostname() >>> hostname 'LAPTOP-28C3GCM7' >>> socket.gethostbyname(hostname) '192.168.1.104'
获取网络读写字节个数
In [10]: psutil.net_io_counters()#获取网络读写字节的个数 Out[10]: snetio(bytes_sent=8445215479, bytes_recv=7761730094, packets_sent=5203357, packets_recv=10378093, errin=0, errout=0, dropin=0, dropout=0)
思考:从中能获得什么信息 ?
获取网络接口信息
>>> psutil.net_if_addrs() {'本地连接* 1': [snicaddr(family=<AddressFamily.AF_LINK: -1>, address='E8-6F-38-26-0F-C9', netmask=None, broadcast=None, ptp=None), snicaddr(family=<AddressFamily.AF_INET: 2>, address='169.254.77.128', netmask='255.255.0.0', broadcast=None, ptp=None), snicaddr(family=<AddressFamily.AF_INET6: 23>, address='fe80::f05e:828a:d017:4d80', netmask=None, broadcast=None, ptp=None)],
获取网络接口状态
>>> psutil.net_if_stats() {'蓝牙网络连接': snicstats(isup=False, duplex=<NicDuplex.NIC_DUPLEX_FULL: 2>, speed=3, mtu=1500), '以太网': snicstats(isup=True, duplex=<NicDuplex.NIC_DUPLEX_FULL: 2>, speed=100, mtu=1500), 'Loopback Pseudo-Interface 1': snicstats(isup=True, duplex=<NicDuplex.NIC_DUPLEX_FULL: 2>, speed=1073, mtu=1500), 'WLAN': snicstats(isup=True, duplex=<NicDuplex.NIC_DUPLEX_FULL: 2>, speed=300, mtu=1500), '本地连接* 1': snicstats(isup=False, duplex=<NicDuplex.NIC_DUPLEX_FULL: 2>, speed=0, mtu=1500), '本地连接* 2': snicstats(isup=False, duplex=<NicDuplex.NIC_DUPLEX_FULL: 2>, speed=0, mtu=1500)} >>> s=psutil.net_if_stats() >>> s['以太网'].isup True
思考:编写程序,查看本机哪个网络接口是开启的 ?
获取当前网络连接信息
In [14]: psutil.net_connections() Out[14]: [sconn(fd=-1, family=<AddressFamily.AF_INET: 2>, type=<SocketKind.SOCK_STREAM: 1>, laddr=addr(ip='127.0.0.1', port=10000), raddr=(), status='LISTEN', pid=9532), sconn(fd=-1, family=<AddressFamily.AF_INET: 2>, type=<SocketKind.SOCK_STREAM: 1>, laddr=addr(ip='192.168.1.104', port=58020), raddr=addr(ip='206.189.32.61', port=443), status='ESTABLISHED', pid=10916), sconn(fd=-1, family=<AddressFamily.AF_INET: 2>, type=<SocketKind.SOCK_STREAM: 1>, laddr=addr(ip='192.168.1.104', port=50557), raddr=addr(ip='40.90.189.152', port=443), status='ESTABLISHED', pid=4676), sconn(fd=-1, family=<AddressFamily.AF_INET: 2>, type=<SocketKind.SOCK_STREAM: 1>, laddr=addr(ip='127.0.0.1', port=52856), raddr=addr(ip='127.0.0.1', port=52857), status='ESTABLISHED', pid=9228), sconn(fd=-1, family=<AddressFamily.AF_INET6: 23>, type=<SocketKind.SOCK_DGRAM: 2>, laddr=addr(ip='::', port=5353), raddr=(), status='NONE', pid=2324), 。。。