Python Netlink library
Pyroute2 is a pure Python netlink and messaging/RPC library. It requires only Python stdlib, no 3rd party libraries. Later it can change, but the deps tree will remain as simple, as it is possible.
The library contains all you need to build either one-node, or distributed netlink-related solutions. It consists of two major parts:
- Netlink parsers: NETLINK_ROUTE, TASKSTATS, etc.
- Messaging infrastructure: broker, clients, etc.
Actually, either side can act as a server or a client, there is no pre-defined roles. But for simplicity, they’re referred here as “server” and “client”.
from pyroute2.rpc import Node from pyroute2.rpc import public class Namespace(object): ''' This class acts as a namespace, that contains methods to be published via RPC. Any method, available through RPC, must be marked as @public. ''' @public def echo(self, msg): ''' Simple echo method, that returns a modified string. ''' return '%s passed' % (msg) # start the RPC node and register the namespace node = Node() node.register(Namespace()) # listen for network connections node.serve('tcp://localhost:9824') # wait for exit -- activity will be done in the # background thread raw_input(' hit return to exit >> ')
from pyroute2.rpc import Node # start the RPC node and connect to the 'server' node = Node() proxy = node.connect('tcp://localhost:9824') # call a remote method through the proxy instance print(proxy.echo('test'))
It will print out
make install or
pip install pyroute2
Python >= 2.6
- test reqs (optional): python-coverage, python-nose