>백엔드 개발 >파이썬 튜토리얼 >Python에서 시스템 네트워크 트래픽 정보를 보는 방법

Python에서 시스템 네트워크 트래픽 정보를 보는 방법

高洛峰
高洛峰원래의
2017-02-23 11:01:421557검색

서문

교통정보는 /proc/net/dev에서 직접 볼 수 있습니다. 저자가 구현한 프로그램은

python net.py interface
명령을 사용합니다.

interface이 네트워크 카드 이름인 경우, 어떤 네트워크 카드가 사용되는지, 컴퓨터에 어떤 네트워크 카드가 있는지는

sudo ifconfig

확인해보세요.

Python으로 구현한 프로그램은 다음과 같습니다.

# coding:utf-8
import sys, time, os


'''
Inter-|  Receive                        | Transmit
 face |bytes  packets errs drop fifo frame compressed multicast|bytes  packets errs drop fifo colls carrier compressed
  lo:  28169   364  0  0  0   0     0     0  28169   364  0  0  0   0    0     0
 wlan1: 7432984  6018  0  0  0   0     0     0  681381  6115  0  0  0   0    0     0
vmnet1:    0    0  0  0  0   0     0     0    0   56  0  0  0   0    0     0
vmnet8:    0    0  0  0  0   0     0     0    0   55  0  0  0   0    0     0
 eth0:    0    0  0  0  0   0     0     0    0    0  0  0  0   0    0     0

'''

_unit_=['B','KB','MB','GB','TB']

def get_net_data(interface):
  for line in open('/proc/net/dev', 'r'):
    if line.split(':')[0].find(interface)>=0:
      return map(int, line.split(':')[1].split())

def convert_bytes_to_string(b):
  cnt = 0
  while b >= 1024.0:
    b = float(b) / 1024.0
    cnt += 1
  return '%.2f%s'%(b,_unit_[cnt])

if __name__ == '__main__':
  interface = sys.argv[1]
  while True:
    net_data = get_net_data(interface)
    receive_data_bytes = net_data[0]
    transmit_data_bytes = net_data[8]
    os.system('clear')
    print 'Interface:%s  -> Receive Data: %s  Transmit Data: %s'%(interface, convert_bytes_to_string(receive_data_bytes), convert_bytes_to_string(transmit_data_bytes))
    time.sleep(1)

프로그램 항목은 if name=='main'에서 시작하려면 먼저 매개변수를 통해 interface를 가져온 다음 get_net_data() 함수를 호출하여 교통 정보를 가져온 다음 일부 데이터를 처리합니다.

요약

위 내용은 모두의 공부나 업무에 도움이 되었으면 좋겠습니다. 따라서 궁금한 점이 있으면 메시지를 남겨서 소통할 수 있습니다.

Python에서 시스템 네트워크 트래픽을 보는 방법에 대한 자세한 내용은 PHP 중국어 웹사이트를 참고하세요!

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