zoukankan      html  css  js  c++  java
  • 网卡流量检测.py

    network_speed网卡流量检测

    #!/usr/bin/env python
    #coding:utf-8
    
    import sys
    import os
    
    import atexit
    import time
    import psutil
    
    #print "Welcome,current system is",os.name," 3 seconds late start to get data..."      
    time.sleep(3)
    
    line_num = 1
    
    #function of Get CPU State;  
    def getCPUstate(interval=1):
        return (" CPU: " + str(psutil.cpu_percent(interval)) + "%")
    #function of Get Memory      
    def getMemorystate():
            phymem = psutil.virtual_memory()
            line = "Memory: %5s%% %6s/%s"%(
                phymem.percent,
                str(int(phymem.used/1024/1024))+"M",
                str(int(phymem.total/1024/1024))+"M"
                )
            return line
    def bytes2human(n):
            """    
            >>> bytes2human(10000)    
            '9.8 K'    
            >>> bytes2human(100001221)    
            '95.4 M'    
            """
            for s in reversed(symbols):
                    if n >= prefix[s]:
            return '%.2f B' % (n)
    
    
    def poll(interval):
            """Retrieve raw stats within an interval window."""
            tot_before = psutil.net_io_counters()
            pnic_before = psutil.net_io_counters(pernic=True)
            # sleep some time      
            time.sleep(interval)
            tot_after = psutil.net_io_counters()
            pnic_after = psutil.net_io_counters(pernic=True)
            # get cpu state      
            cpu_state = getCPUstate(interval)
            # get memory      
            memory_state = getMemorystate()
            return (tot_before, tot_after, pnic_before, pnic_after,cpu_state,memory_state)
    
    def refresh_window(tot_before, tot_after, pnic_before, pnic_after,cpu_state,memory_state):
            if os.name == 'nt':
                os.system("cls")
            else:
                os.system("clear")
            """Print stats on screen."""
    
    
            #print current time #cpu state #memory      
            print(time.asctime()+" | "+cpu_state+" | "+memory_state)
    
            # totals      
            print(" NetStates:")
            )
            print("total packets:                 sent: %-10s     received: %s" % (tot_after.packets_sent,
            )
            # per-network interface details: let's sort network interfaces so      
            # that the ones which generated more traffic are shown first      
            print("")
            nic_names = pnic_after.keys()
            #nic_names.sort(key=lambda x: sum(pnic_after[x]), reverse=True)      
            for name in nic_names:
                    stats_before = pnic_before[name]
                    stats_after = pnic_after[name]
                    templ = "%-15s %15s %15s"
                    print(templ % (name, "TOTAL", "PER-SEC"))
                    print(templ % (
                            "bytes-sent",
                            bytes2human(stats_after.bytes_sent),
                            bytes2human(stats_after.bytes_sent - stats_before.bytes_sent) + '/s',
                    ))
                    print(templ % (
                            "bytes-recv",
                            bytes2human(stats_after.bytes_recv),
                            bytes2human(stats_after.bytes_recv - stats_before.bytes_recv) + '/s',
                    ))
                    print(templ % (
                            "pkts-sent",
                            stats_after.packets_sent,
                            stats_after.packets_sent - stats_before.packets_sent,
                    ))
                    print(templ % (
                            "pkts-recv",
                            stats_after.packets_recv,
                            stats_after.packets_recv - stats_before.packets_recv,
                    ))
                    print("")
    
    try:
            interval = 0
            while 1:
                    args = poll(interval)
                    refresh_window(*args)
                    interval = 1
    except (KeyboardInterrupt, SystemExit):
            pass
  • 相关阅读:
    Android 按键消息处理Android 按键消息处理
    objcopy
    SQLite多线程读写实践及常见问题总结
    android动画坐标定义
    Android动画效果translate、scale、alpha、rotate
    Android公共库(缓存 下拉ListView 下载管理Pro 静默安装 root运行 Java公共类)
    Flatten Binary Tree to Linked List
    Distinct Subsequences
    Populating Next Right Pointers in Each Node II
    Populating Next Right Pointers in Each Node
  • 原文地址:https://www.cnblogs.com/liuyansheng/p/6281829.html
Copyright © 2011-2022 走看看