Metadata-Version: 2.1
Name: netprocmon
Version: 0.0.1rc7
Summary: Network Process Monitor is a Python API to monitor process traffic
Home-page: https://pypi.python.org/pypi/netprocmon
Author: Henrik Ankersoe
Author-email: henrik@diblo.dk
License: GPL v3
Platform: UNKNOWN
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Topic :: Software Development :: Build Tools
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
Classifier: Programming Language :: Python :: 2.7

Network Process Monitor
_______________________

Network Process Monitor makes it easy for Python developers to monitor a proccess' network usage.

Currently, it works with IPv4 and tested against Python 2.7.

`Development site <https://github.com/Diblo/netprocmon>`__.

© Network Process Monitor contributors 2019 under the `The GNU General Public License v3.0 <https://github.com/Diblo/netprocmon/blob/master/LICENSE.txt>`__.

Installation
-----------------------------

Install using `pip <http://www.pip-installer.org/en/latest/>`__ with:

    pip install netprocmon

Or, `download a wheel or source archive from PyPI <https://pypi.python.org/pypi/netprocmon>`__.

Basic
-----------------------------

    >>> import time
    >>> from netprocmon import Monitor
    >>> pid = 586
    >>> with Monitor() as a:
    ...      a.add_pid(pid)
    ...      a.start()
    ...      while True:
    ...          time.sleep(5)
    ...          print [str(n) for n in a.get_count_by_pid(pid)]
    ...
    ['NetworkTraffic(interface=eth1, recv=2302, pid=586, send=6806)']
    ['NetworkTraffic(interface=eth1, recv=2832, pid=586, send=9104)']
    ['NetworkTraffic(interface=eth1, recv=3548, pid=586, send=10742)', 'NetworkTraffic(interface=eth2, recv=0, pid=586, send=121)']


Listen address/interface
-----------------------------

Limit listening to an interface by providing the interface address

    >>> import time
    >>> from netprocmon import Monitor
    >>> pid = 586
    >>> with Monitor() as a:
    ...      a.add_pid(pid)
    ...      a.add_address("10.0.0.21")
    ...      a.start()
    ...      while True:
    ...          time.sleep(5)
    ...          print [str(n) for n in a.get_count_by_pid(pid)]
    ...
    ['NetworkTraffic(interface=eth1, recv=530, pid=586, send=2758)']
    ['NetworkTraffic(interface=eth1, recv=1538, pid=586, send=5044)']
    ['NetworkTraffic(interface=eth1, recv=2386, pid=586, send=8166)']


Available constants and methods
---------------------------------

=========
Constants
=========
- **P_TCP**: Define the TCP protocol number
- **P_UDP**: Define the UDP protocol number

======================
Process Identification
======================
- **add_pid(PID)**:                 Add a process identification to have the traffic counted
- **remove_pid(PID)**:              Remove a process identification and the traffic count
- **get_pids()**:                   Get a list of process identifications that get the traffic counted
- **get_pid_by_port(proto, port)**: Get the process identification based on a supervise port
- **clear_pids()**:                 Remove all process identifications

=========
Listening
=========
- **add_address(addr)**:                  Add a listening restriction; The address should fit with an interface address
- **get_addresses()**:                    Return a list of listening restrictions
- **remove_address(addr)**:               Remove a listening restriction
- **clear_addresses()**:                  Remove all listening restriction
- **get_listen_addrs()**:                 Return a list of interface addresses that are being listed to
- **get_listen_interfaces()**:            Return a list of interfaces with their addresses that are being listed to
- **get_listen_interface_by_addr(addr)**: Return the interface name based on a address; If the address is not listened to, None will be returned

===
Run
===
- **start()**: Start the monitor

============
Traffic Info
============
- **get_count_by_pid(PID)**: Get network traffic based on a process identification

=========
Port Info
=========
- **get_ports_by_pid(PID)**:     Get a list of supervise ports based on a process identification
- **get_ports_by_proto(proto)**: Get a list of supervise ports based on TCP or UDP protocol; See P_TCP, P_UDP
- **get_ports()**:               Get a list of all supervise ports


