백엔드 개발 파이썬 튜토리얼 linux系统使用python监测网络接口获取网络的输入输出

linux系统使用python监测网络接口获取网络的输入输出

Jun 16, 2016 am 08:45 AM
리눅스 시스템 입력 및 출력

net.py 获取网络接口的输入和输出

复制代码 代码如下:

#!/usr/bin/env Python
import time
import sys

if len(sys.argv) > 1:
 INTERFACE = sys.argv[1]
else:
 INTERFACE = 'eth0'
STATS = []
print 'Interface:',INTERFACE

def rx():
 ifstat = open('/proc/net/dev').readlines()
 for interface in  ifstat:
  if INTERFACE in interface:
   stat = float(interface.split()[1])
   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]

print 'In   Out'
rx()
tx()

while True:
 time.sleep(1)
 rxstat_o = list(STATS)
 rx()
 tx()
 RX = float(STATS[0])
 RX_O = rxstat_o[0]
 TX = float(STATS[1])
 TX_O = rxstat_o[1]
 RX_RATE = round((RX - RX_O)/1024/1024,3)
 TX_RATE = round((TX - TX_O)/1024/1024,3)
 print RX_RATE ,'MB  ',TX_RATE ,'MB'

简单说明一下清单 4:清单 4 读取/proc/net/dev 中的信息,Python 中文件操作可以通过 open 函数,这的确很像 C 语言中的 fopen。通过 open 函数获取一个 file object,然后调用 read(),write()等方法对文件进行读写操作。另外 Python 将文本文件的内容读入可以操作的字符串变量非常容易。文件对象提供了三个“读”方法: read()、readline() 和 readlines()。每种方法可以接受一个变量以限制每次读取的数据量,但它们通常不使用变量。 .read() 每次读取整个文件,它通常用于将文件内容放到一个字符串变量中。然而 .read() 生成文件内容最直接的字符串表示,但对于连续的面向行的处理,它却是不必要的,并且如果文件大于可用内存,则不可能实现这种处理。.readline() 和 .readlines() 之间的差异是后者一次读取整个文件,象 .read() 一样。.readlines() 自动将文件内容分析成一个行的列表,该列表可以由 Python 的 for ... in ... 结构进行处理。另一方面,.readline() 每次只读取一行,通常比 .readlines() 慢得多。仅当没有足够内存可以一次读取整个文件时,才应该使用 .readline()。最后清单 4 打印出网络接口的输入和输出情况。
可以使用 Python 命令运行脚本 net.py 结果见图 4

linux系统使用python监测网络接口获取网络的输入输出

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

뜨거운 기사 태그

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Linux에서 작업 관리자 사용 Linux에서 작업 관리자 사용 Aug 15, 2024 am 07:30 AM

Linux에서 작업 관리자 사용

Zabbix 중국 모니터링 서버에서 그래프와 차트가 왜곡되어 표시되는 문제를 해결합니다. Zabbix 중국 모니터링 서버에서 그래프와 차트가 왜곡되어 표시되는 문제를 해결합니다. Jul 31, 2024 pm 02:10 PM

Zabbix 중국 모니터링 서버에서 그래프와 차트가 왜곡되어 표시되는 문제를 해결합니다.

Linux 사용자의 등록 날짜를 확인하는 데 도움이 되는 7가지 방법 Linux 사용자의 등록 날짜를 확인하는 데 도움이 되는 7가지 방법 Aug 24, 2024 am 07:31 AM

Linux 사용자의 등록 날짜를 확인하는 데 도움이 되는 7가지 방법

Linux 시스템에서 WPS 누락 글꼴로 인해 파일이 깨졌을 경우 어떻게 해야 합니까? Linux 시스템에서 WPS 누락 글꼴로 인해 파일이 깨졌을 경우 어떻게 해야 합니까? Jul 31, 2024 am 12:41 AM

Linux 시스템에서 WPS 누락 글꼴로 인해 파일이 깨졌을 경우 어떻게 해야 합니까?

5분 안에 Fedora에 글꼴을 추가하는 방법을 가르쳐주세요. 5분 안에 Fedora에 글꼴을 추가하는 방법을 가르쳐주세요. Jul 23, 2024 am 09:45 AM

5분 안에 Fedora에 글꼴을 추가하는 방법을 가르쳐주세요.

던져 올림! 라즈베리 파이에서 DOS 실행 던져 올림! 라즈베리 파이에서 DOS 실행 Jul 19, 2024 pm 05:23 PM

던져 올림! 라즈베리 파이에서 DOS 실행

하나의 네트워크 케이블을 사용하여 두 개의 Ubuntu 호스트를 인터넷에 연결하는 방법 하나의 네트워크 케이블을 사용하여 두 개의 Ubuntu 호스트를 인터넷에 연결하는 방법 Aug 07, 2024 pm 01:39 PM

하나의 네트워크 케이블을 사용하여 두 개의 Ubuntu 호스트를 인터넷에 연결하는 방법

Linux 명령줄 기록을 숨기는 방법 Linux 명령줄 기록을 숨기는 방법 Aug 17, 2024 am 07:34 AM

Linux 명령줄 기록을 숨기는 방법

See all articles