Skip to main content

Transform Cisco CLIs and APIs into Business Ready Documents

Project description

published

business_ready

A Python CLI that transforms Cisco CLIs and REST APIs into "Business Ready" Documents

Getting Started

Business Ready has two modes of operation:

Cisco Command Line Interface (CLI) output transformation using pyATS (Linux required)

Cisco REST API output transformation using Python Requests (Windows or Linux friendly)

Each Business Ready Function provides the user with 5 output files:

Comma-separated values (CSV) - Spreadsheets!

HyperText Markup Language (HTML) - Webpages!

Markdown (tabular) - GitHub Ready Tables!

Markdown (markmap) - Mind Maps!

JavaScript Object Notation (JSON) - The Raw payload

The VS Code Terminal can be used, either with Windows (REST APIs) or WSL Ubuntu (pyATS), to create a Python virtual environment and run Business Ready.

The following extensions can be used to maximize the user experience:

Markmap (MD files)

Markdown Preview (MD files)

Excel Preview (CSV files)

Open in Default Browser (HTML files)

Installation Guides

Cisco IOS / NXOS CLI

Linux and pyATS Required

The following instructions are based on Windows WSL2 and Ubuntu however any flavour of Linux will work with possibly slightly different commands.

Confirm Python 3.9 is installed
$ python3 -V
Python 3.9.10
Create and activate a virtual environment
$ sudo apt install python3-venv
$ python3 -m venv demo
$ source demo/bin/activate
(demo)$
Install pyATS[full]
(demo)$ pip install pyats[full]
Install businessready
(demo)$ pip install businessready

Cisco REST APIs - Windows or Linux Compatible

Confirm Python 3.9 is installed

Download Python

Create and activate a virtual environment

C:\>python3 -m venv demo
C:\>demo\Scripts\activate
(demo) C:\>

Install businessready

(demo) C:\>pip install buisnessready

Usage

Once businessready is installed it can be used from the Python command-line

Python CLI

Linux

(demo)$ python3 
>>> import businessready

Windows

(demo) C:\>python3 
>>> import businessready

Cisco CLI

Connecting - Business Ready functions that extend pyATS require 4 parameters

hostname
username
password
IP / DNS Address

Cisco IOS-XE

All - You can run all IOS-XE Learn And Show functions to fully document a device with one command
>>> import businessready 
>>> businessready.IOS_all("hostname","username","password","IP / DNS Address")
Learn All - You can run all IOS-XE Learn functions to fully learn a device with one command
>>> import businessready 
>>> businessready.IOS_learn_all("hostname","username","password","IP / DNS Address")
Show All - You can run all IOS-XE Show functions to fully parse a device with one command
>>> import businessready 
>>> businessready.IOS_show_all("hostname","username","password","IP / DNS Address")
Individual Learn / Show Functions - You can run individual learn or show commands as well if you are looking for something specific
>>> import businessready 
>>> businessready.IOS_learn_{{ function }}("hostname","username","password","IP / DNS Address")
>>> businessready.IOS_show_{{ show command }}("hostname","username","password","IP / DNS Address")

Cisco NXOS

All - You can run all NXOS Learn And Show functions to fully document a device with one command
>>> import businessready 
>>> businessready.NXOS_all("hostname","username","password","IP / DNS Address")
Learn All - You can run all NXOS Learn functions to fully learn a device with one command
>>> import businessready 
>>> businessready.NXOS_learn_all("hostname","username","password","IP / DNS Address")
Show All - You can run all NXOS-XE Show functions to fully parse a device with one command
>>> import businessready 
>>> businessready.NXOS_show_all("hostname","username","password","IP / DNS Address")
Individual Learn / Show Functions - You can run individual learn or show commands as well if you are looking for something specific
>>> import businessready 
>>> businessready.NXOS_learn_{{ function }}("hostname","username","password","IP / DNS Address")
>>> businessready.NXOS_show_{{ show command }}("hostname","username","password","IP / DNS Address")

Cisco Digital Network Architecture Center (DNAC)

Connecting - Business Ready functions that extend DNAC REST APIs require 3 parameters

DNAC URL
username
password
IP / DNS Address

All - You can run all DNAC REST API functions to fully document a device with one command

>>> import businessready 
>>> businessready.DNAC_all("url","username","password")

Individual REST APIs - You can run individual REST API as well if you are looking for something specific

>>> import businessready 
>>> businessready.DNAC_{{ REST API }}("url","username","password")

Meraki Dashboard

Connecting - Business Ready functions that extend Meraki Dashboard REST APIs require 3 parameters

Meraki URL
Dashboard Token

All - You can run all Meraki REST API functions to fully document a device with one command

>>> import businessready 
>>> businessready.Meraki_all("url","Dashboard Token")

Individual REST APIs - You can run individual REST API as well if you are looking for something specific

>>> import businessready 
>>> businessready.Meraki_{{ REST API }}("url","Dashboard Token")
  • In Development

Cisco Identity Services Engine (ISE)

  • In Development

Topology Examples

If you have more than one device you want to transform Business Ready can handle multiple devices in a variety of ways

Python Array Source

The included python_for_loop_example.py file

import businessready

device01_info = ["dist-rtr01", "cisco", "cisco", "10.10.20.175"]
device02_info = ["dist-rtr02", "cisco", "cisco", "10.10.20.176"]

device_list = [device01_info, device02_info]

for device in device_list:
    businessready.NXOS_learn_all(*device)

pyATS YAML Testbed Source

The included from_testbed_example.py

import businessready
import yaml

with open('testbed.yml') as info:
    info_dict = yaml.safe_load(info)

for device in info_dict['devices']:
    if info_dict['devices'][device]['os'] == "iosxe":
        businessready.IOS_learn_all(device,info_dict['devices'][device]['credentials']['default']['username'],info_dict['devices'][device]['credentials']['default']['password'],info_dict['devices'][device]['connections']['cli']['ip'])
    elif info_dict['devices'][device]['os'] == "nxos":
        businessready.NXOS_learn_all(device,info_dict['devices'][device]['credentials']['default']['username'],info_dict['devices'][device]['credentials']['default']['password'],info_dict['devices'][device]['connections']['cli']['ip'])

CSV Source

The included from_csv_example.py

import businessready
import csv

with open('spreadsheet.csv') as info:
    for line in csv.DictReader(info):
	    info_dict = line
        print(info_dict)
	    if info_dict['os'] == "iosxe":
            businessready.IOS_all(info_dict['hostname'],info_dict['username'],info_dict['password'],info_dict['ip'])
	    elif info_dict['os'] == "nxos":
            businessready.NXOS_all(info_dict['hostname'],info_dict['username'],info_dict['password'],info_dict['ip'])

Function Libary

IOS-XE

All

businessready.IOS_all()
businessready.IOS_learn_all()
businessready.IOS_show_all()

Learn

businessready.IOS_learn_all()
businessready.IOS_learn_acl()
businessready.IOS_learn_arp()
businessready.IOS_learn_bgp()
businessready.IOS_learn_dot1x()
businessready.IOS_learn_hsrp()
businessready.IOS_learn_interface()
businessready.IOS_learn_lldp()
businessready.IOS_learn_ntp()
businessready.IOS_learn_ospf(ho
businessready.IOS_learn_routing()
businessready.IOS_learn_stp()
businessready.IOS_learn_vlan()
businessready.IOS_learn_vrf()

Show

businessready.IOS_show_all()
businessready.IOS_show_access_lists()
businessready.IOS_show_cdp_neighbors()
businessready.IOS_show_cdp_neighbors_detail()
businessready.IOS_show_environment_all()
businessready.IOS_show_etherchannel_summary()
businessready.IOS_show_interfaces()
businessready.IOS_show_interfaces_status()
businessready.IOS_show_interfaces_trunk()
businessready.IOS_show_inventory_9000()
businessready.IOS_show_ip_arp()
businessready.IOS_show_ip_interface_brief()
businessready.IOS_show_ip_ospf()
businessready.IOS_show_ip_ospf_database()
businessready.IOS_show_ip_ospf_interface()
businessready.IOS_show_ip_ospf_neighbor()
businessready.IOS_show_ip_ospf_neighbor_detail()
businessready.IOS_show_ip_route()
businessready.IOS_show_license_summary()
businessready.IOS_show_mac_address_table()
businessready.IOS_show_ntp_associations()
businessready.IOS_show_wlan_all()
businessready.IOS_show_wlan_client_stats()
businessready.IOS_show_wlan_summary()
businessready.IOS_show_wireless_profile_summary()
businessready.IOS_show_wireless_profile_detailed()
businessready.IOS_show_version()
businessready.IOS_show_vlan()
businessready.IOS_show_vrf()

NXOS

All

businessready.NXOS_all()
businessready.NXOS_learn_all()
businessready.NXOS_show_all()

Learn

businessready.NXOS_learn_all()
businessready.NXOS_learn_acl()
businessready.NXOS_learn_arp()
businessready.NXOS_learn_bgp()
businessready.NXOS_learn_hsrp()
businessready.NXOS_learn_interface()
businessready.NXOS_learn_ospf()
businessready.NXOS_learn_platform()
businessready.NXOS_learn_routing()
businessready.NXOS_learn_vlan()
businessready.NXOS_learn_vrf()

Show

businessready.NXOS_show_access_lists()
businessready.NXOS_show_bgp_process_vrf_all()
businessready.NXOS_show_bgp_sessions()
businessready.NXOS_show_cdp_neighbors()
businessready.NXOS_show_cdp_neighbors_detail()
businessready.NXOS_show_environment()
businessready.NXOS_show_interface()
businessready.NXOS_show_interface_status()
businessready.NXOS_show_interface_transceiver()
businessready.NXOS_show_inventory()
businessready.NXOS_show_ip_arp_vrf()
businessready.NXOS_show_ip_interface_brief()
businessready.NXOS_show_ip_ospf()
businessready.NXOS_show_ip_ospf_interface()
businessready.NXOS_show_ip_ospf_neighbors_deta)
businessready.NXOS_show_ip_ospf_neighbors_detail_vrf()
businessready.NXOS_show_ip_ospf_vrf()
businessready.NXOS_show_ip_ospf_interface_vrf()
businessready.NXOS_show_ip_route()
businessready.NXOS_show_ip_route_vrf()
businessready.NXOS_show_mac_address_table()
businessready.NXOS_show_port_channel_summary()
businessready.NXOS_show_version()
businessready.NXOS_show_vlan()
businessready.NXOS_show_vrf()
businessready.NXOS_show_vrf_all_detail()
businessready.NXOS_show_vrf_all_interface()
businessready.NXOS_show_vrf_detail()

DNAC

businessready.DNAC_sites()

businessready.DNAC_sites()

businessready.DNAC_site_health()

businessready.DNAC_site_member()

businessready.DNAC_vlan()

businessready.DNAC_vlan_topology()

businessready.DNAC_physical_topology()

businessready.DNAC_routing_topology()

businessready.DNAC_network_health()

businessready.DNAC_device()

businessready.DNAC_swim()

businessready.DNAC_projects()

businessready.DNAC_templates()

businessready.DNAC_rf_profiles()

businessready.DNAC_assurance_tests()

businessready.DNAC_flow_analysis()

Meraki

businessready.Meraki_all()

businessready.Meraki_organizations()

businessready.Meraki_organization_devices()

businessready.Meraki_organization_licenses()

businessready.Meraki_organization_adaptive_policies()

businessready.Meraki_organization_admins()

businessready.Meraki_organization_alert_profiles()

businessready.Meraki_organization_branding_policy()

businessready.Meraki_organization_clients()

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

businessready-0.9.152.tar.gz (222.7 kB view details)

Uploaded Source

Built Distribution

businessready-0.9.152-py3-none-any.whl (513.5 kB view details)

Uploaded Python 3

File details

Details for the file businessready-0.9.152.tar.gz.

File metadata

  • Download URL: businessready-0.9.152.tar.gz
  • Upload date:
  • Size: 222.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.13 CPython/3.10.4 Linux/5.10.102.1-microsoft-standard-WSL2

File hashes

Hashes for businessready-0.9.152.tar.gz
Algorithm Hash digest
SHA256 0364aa25028f700218c8de73905cecc7f7ce30c475ca29f72efa448f06260a64
MD5 9ca810d6a4686618ba13ccb610c0fdb1
BLAKE2b-256 c53fdbc5748da989ba7d3bcd77ec4d0188532653c4e6c36a27980cbee0ea7be3

See more details on using hashes here.

File details

Details for the file businessready-0.9.152-py3-none-any.whl.

File metadata

  • Download URL: businessready-0.9.152-py3-none-any.whl
  • Upload date:
  • Size: 513.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.13 CPython/3.10.4 Linux/5.10.102.1-microsoft-standard-WSL2

File hashes

Hashes for businessready-0.9.152-py3-none-any.whl
Algorithm Hash digest
SHA256 0dc6fe16099d9682ec5436045596f682d4614e85890e06439c8c5dbd61a181bd
MD5 580755b7d34c5e983a2d575817d8a73f
BLAKE2b-256 134a9f024689d491a05b8ba91931ab5d869800cbc80736c981f6bc39bbff7eab

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page