Python网速监控

Python网速监控脚本

功能: 统计网卡接收和发送的总流量,计算每秒的网速

代码如下:

#!/bin/env python36  import sys  import threading  import time      # 单位换算  def unit_conversion(byte):      byte = int(byte)      if byte > 1000:          res = byte / 1024          if res < 1000:              res = float('%.2f' % res)              return str(res) + 'k'          elif res < 1000 * 1024:              res = res / 1024              res = float('%.2f' % res)              return str(res) + 'm'          else:              res = res / (1024 * 1024)              res = float('%.2f' % res)              return str(res) + 'g'      def get_net_data(netdev):      with open('/proc/net/dev', 'r') as f:          for line in f:              if line.find(netdev) >= 0:                  receive = line.split(':')[1].split()[0]                  transmit = line.split(':')[1].split()[8]                  return float(receive), float(transmit)      def speed_monitor(netdev):      while True:          receive_old, transmit_old = get_net_data(netdev)          time.sleep(1)          receive, transmit = get_net_data(netdev)          print('recevice' + unit_conversion(receive - receive_old) + '/s')          print('transmit' + unit_conversion(transmit - transmit_old) + '/s')      if __name__ == "__main__":      if sys.argv[1] == "t":          receive, transmit = get_net_data(sys.argv[2])          print(unit_conversion(receive))          print(unit_conversion(transmit))      elif sys.argv[1] == "s":          threading.Thread(target=speed_monitor,args=(sys.argv[2],)).start()