diff options
Diffstat (limited to 'python/psutil/examples/nettop.py')
m--------- | python/psutil | 0 | ||||
-rwxr-xr-x | python/psutil/examples/nettop.py | 165 |
2 files changed, 0 insertions, 165 deletions
diff --git a/python/psutil b/python/psutil new file mode 160000 +Subproject a0967043b5819b2edc61d9a12306289d5e7f98c diff --git a/python/psutil/examples/nettop.py b/python/psutil/examples/nettop.py deleted file mode 100755 index 7a8343ee4..000000000 --- a/python/psutil/examples/nettop.py +++ /dev/null @@ -1,165 +0,0 @@ -#!/usr/bin/env python -# -# $Id: iotop.py 1160 2011-10-14 18:50:36Z g.rodola@gmail.com $ -# -# Copyright (c) 2009, Giampaolo Rodola'. All rights reserved. -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. - -""" -Shows real-time network statistics. - -Author: Giampaolo Rodola' <g.rodola@gmail.com> - -$ python examples/nettop.py ------------------------------------------------------------ -total bytes: sent: 1.49 G received: 4.82 G -total packets: sent: 7338724 received: 8082712 - -wlan0 TOTAL PER-SEC ------------------------------------------------------------ -bytes-sent 1.29 G 0.00 B/s -bytes-recv 3.48 G 0.00 B/s -pkts-sent 7221782 0 -pkts-recv 6753724 0 - -eth1 TOTAL PER-SEC ------------------------------------------------------------ -bytes-sent 131.77 M 0.00 B/s -bytes-recv 1.28 G 0.00 B/s -pkts-sent 0 0 -pkts-recv 1214470 0 -""" - -import atexit -import time -import sys -try: - import curses -except ImportError: - sys.exit('platform not supported') - -import psutil - - -# --- curses stuff -def tear_down(): - win.keypad(0) - curses.nocbreak() - curses.echo() - curses.endwin() - -win = curses.initscr() -atexit.register(tear_down) -curses.endwin() -lineno = 0 - - -def print_line(line, highlight=False): - """A thin wrapper around curses's addstr().""" - global lineno - try: - if highlight: - line += " " * (win.getmaxyx()[1] - len(line)) - win.addstr(lineno, 0, line, curses.A_REVERSE) - else: - win.addstr(lineno, 0, line, 0) - except curses.error: - lineno = 0 - win.refresh() - raise - else: - lineno += 1 -# --- curses stuff - - -def bytes2human(n): - """ - >>> bytes2human(10000) - '9.8 K' - >>> bytes2human(100001221) - '95.4 M' - """ - symbols = ('K', 'M', 'G', 'T', 'P', 'E', 'Z', 'Y') - prefix = {} - for i, s in enumerate(symbols): - prefix[s] = 1 << (i + 1) * 10 - for s in reversed(symbols): - if n >= prefix[s]: - value = float(n) / prefix[s] - return '%.2f %s' % (value, 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) - return (tot_before, tot_after, pnic_before, pnic_after) - - -def refresh_window(tot_before, tot_after, pnic_before, pnic_after): - """Print stats on screen.""" - global lineno - - # totals - print_line("total bytes: sent: %-10s received: %s" % ( - bytes2human(tot_after.bytes_sent), - bytes2human(tot_after.bytes_recv)) - ) - print_line("total packets: sent: %-10s received: %s" % ( - tot_after.packets_sent, tot_after.packets_recv)) - - # per-network interface details: let's sort network interfaces so - # that the ones which generated more traffic are shown first - print_line("") - nic_names = list(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_line(templ % (name, "TOTAL", "PER-SEC"), highlight=True) - print_line(templ % ( - "bytes-sent", - bytes2human(stats_after.bytes_sent), - bytes2human( - stats_after.bytes_sent - stats_before.bytes_sent) + '/s', - )) - print_line(templ % ( - "bytes-recv", - bytes2human(stats_after.bytes_recv), - bytes2human( - stats_after.bytes_recv - stats_before.bytes_recv) + '/s', - )) - print_line(templ % ( - "pkts-sent", - stats_after.packets_sent, - stats_after.packets_sent - stats_before.packets_sent, - )) - print_line(templ % ( - "pkts-recv", - stats_after.packets_recv, - stats_after.packets_recv - stats_before.packets_recv, - )) - print_line("") - win.refresh() - lineno = 0 - - -def main(): - try: - interval = 0 - while True: - args = poll(interval) - refresh_window(*args) - interval = 1 - except (KeyboardInterrupt, SystemExit): - pass - -if __name__ == '__main__': - main() |