python 控制有线网卡_用 Python 脚本实现对 Linux 服务器的网卡流量监控

*这篇文章网上已经有相关代码,为了加深印象,我做了相关批注,希望对朋友们有帮助

工作原理:基于/proc文件系统

Linux 系统为管理员提供了非常好的方法,使其可以在系统运行时更改内核,而不需要重新引导内核系统,这是通过/proc 虚拟文件系统实现的。/proc 文件虚拟系统是一种内核和内核模块用来向进程(process)发送信息的机制(所以叫做“/proc”),这个伪文件系统允许与内核内部数据结构交互,获取有关进程的有用信息,在运行中(on the fly)改变设置(通过改变内核参数)。与其他文件系统不同,/proc 存在于内存而不是硬盘中。proc 文件系统提供的信息如下:

1:进程信息:系统中的任何一个进程,在 proc 的子目录中都有一个同名的进程 ID,可以找到 cmdline、

mem、root、stat、statm,以及 status。某些信息只有超级用户可见,例如进程根目录。每一个单独含

有现有进程信息的进程有一些可用的专门链接,系统中的任何一个进程都有一个单独的自链接指向进程

信息,其用处就是从进程中获取命令行信息。

2:系统信息:如果需要了解整个系统信息中也可以从/proc/stat 中获得,其中包括 CPU 占用情况、磁盘

空间、内存对换、中断等。

3:CPU 信息:利用/proc/CPUinfo 文件可以获得中央处理器的当前准确信息。

负载信息:/proc/loadavg 文件包含系统负载信息。

4:系统内存信息:/proc/meminfo 文件包含系统内存的详细信息,其中显示物理内存的数量、可用交换空

间的数量,以及空闲内存的数量等。

使用 Python 脚本实现对 Linux 服务器的监控

#!/usr/bin/env python

# _*_coding:utf-8_*_

# File: get_net_infor.py

# Author li ning

# Date 2015.11.30 00:41:35

import sys

import time

"""

原理:linux系统基于一切皆文件原理,我们可以把任何信息当做字符串读入进行分析

"""

#若没有提供参数,这里默认为网卡为eth0,可根据自己实际情况接参数.eg:(python get_net_infor.py eth1)

if len(sys.argv) > 1:

INTERFACE = sys.argv[1]

else:

INTERFACE = "eth0"

print "当前查看的网卡为:", INTERFACE

STATS = []

#定义接收流量函数

def rx():

#open 读取文件若非常大,读入到内存会非常耗时,这时就建议用readline 而非readlines

ifstat = open("/proc/net/dev").readlines()

#遍历list ifstat中的字符串

for interface in ifstat:

#判断eth0是否在字符串中

if INTERFACE in interface:

#默认空格分裂字符串获取需要的流量包值

stat = float(interface.split()[1])

#将值复制给STATS

STATS[0:] = [stat]

#定义发送流量函数

def tx():

ifstat = open("/proc/net/dev").readlines()

for interface in ifstat:

if INTERFACE in interface:

stat = float(interface.split()[9])

STATS[1:] = [stat]

if __name__ == '__main__':

print "IN",">>>>","OUT"

rx()

tx()

#死循环 时刻监控网卡流量

while True:

time.sleep(1)

sta_0 = list(STATS)

rx()

tx()

RX = float(STATS[0])

RX_0 = sta_0[0]

TX = float(STATS[0])

TX_0 = sta_0[1]

#round函数转换,保留小数点后三位

RX_INFO = round((RX - RX_0)/1024/1024,3)

TX_INFO = round((TX - TX_0)/1024/1024,3)

print RX_INFO,"MB",TX_INFO,"MB"

以下是本地运行结果

830092-20151130004625672-668633774.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值