Metadata-Version: 2.1
Name: netdev
Version: 0.9.2
Summary: Asynchronous multi-vendor library for interacting with network devices
Home-page: https://netdev.readthedocs.io
License: Apache-2.0
Keywords: netdev,network,netmiko,asyncio
Author: Sergey Yakovlev
Author-email: selfuryon@gmail.com
Requires-Python: >=3.6,<4.0
Classifier: Development Status :: 4 - Beta
Classifier: Framework :: AsyncIO
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: System Administrators
Classifier: Intended Audience :: Telecommunications Industry
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Topic :: System :: Networking
Classifier: Topic :: System :: Systems Administration
Provides-Extra: docs
Requires-Dist: PyYAML (>=5.1,<6.0)
Requires-Dist: asyncssh (>=1.15,<2.0)
Requires-Dist: sphinx (>=2.0,<3.0); extra == "docs"
Requires-Dist: sphinx_rtd_theme (>=0.4,<0.5); extra == "docs"
Project-URL: Documentation, https://netdev.readthedocs.io
Project-URL: Repository, https://github.com/selfuryon/netdev
Description-Content-Type: text/x-rst

Netdev
******

Asynchronous multi-vendor library for interacting with network devices

Inspired by netmiko

Requires:
---------
* asyncio
* AsyncSSH
* Python >=3.5
* pyYAML
  
 
Supports: 
---------
* Cisco IOS 
* Cisco IOS XE
* Cisco IOS XR
* Cisco ASA
* Cisco NX-OS 
* HP Comware (like V1910 too)
* Fujitsu Blade Switches
* Mikrotik RouterOS
* Arista EOS
* Juniper JunOS
* Aruba AOS 6.X
* Aruba AOS 8.X
* Terminal

Examples:
---------
Example of interacting with Cisco IOS devices:

.. code-block:: python

    import asyncio
    import netdev

    async def task(param):
        async with netdev.create(**param) as ios:
            # Testing sending simple command
            out = await ios.send_command("show ver")
            print(out)
            # Testing sending configuration set
            commands = ["line console 0", "exit"]
            out = await ios.send_config_set(commands)
            print(out)
            # Testing sending simple command with long output
            out = await ios.send_command("show run")
            print(out)
            # Testing interactive dialog
            out = await ios.send_command("conf", pattern=r'\[terminal\]\?', strip_command=False)
            out += await ios.send_command("term", strip_command=False)
            out += await ios.send_command("exit", strip_command=False, strip_prompt=False)
            print(out)


    async def run():
        dev1 = { 'username' : 'user',
                 'password' : 'pass',
                 'device_type': 'cisco_ios',
                 'host': 'ip address',
        }
        dev2 = { 'username' : 'user',
                 'password' : 'pass',
                 'device_type': 'cisco_ios',
                 'host': 'ip address',
        }
        devices = [dev1, dev2]
        tasks = [task(dev) for dev in devices]
        await asyncio.wait(tasks)


    loop = asyncio.get_event_loop()
    loop.run_until_complete(run())



