Skip to main content

Simplified Paramiko Library to Fetch Data From MultiVendor Network Devices

Project description

simplefetch

Simplified Paramiko Library to Fetch Data From MultiVendor Network Devices

Supports

  • Cisco IOS
  • Cisco IOS-XE
  • Cisco NX-OS
  • Cisco IOS-XR
  • Juniper Junos
  • Huawei VRP5/8
  • ZTE ZXROS
  • DELL OS10
  • Ericsson IPOS

Script is based on paramiko and catches device-prompt to understand the output is fetched, thus there is a strong possibility that script could work with many network devices from different vendors, i only do not have the chance to test.

Accepted Network Device OS Types

  • huawei-vrp
  • cisco-ios
  • cisco-iosxe
  • cisco-iosxr
  • cisco-nxos
  • junos
  • dell-os10
  • zte-zxros
  • ericsson-ipos
  • nokia-sros

For the above device type pagination commands (e.g. "terminal length 0") send automatically.

Simple Example

import simplefetch

test_router = simplefetch.SSH("192.168.1.1", port=22,user="admin", passwd="secret", network_os="cisco-ios")
print (test_router.fetchdata("show version"))
test_router.disconnect()

Example with Logging

import simplefetch,logging
logging.basicConfig(filename='info.log', filemode='a', level=logging.INFO,
                    format='%(asctime)s [%(name)s] %(levelname)s (%(threadName)-10s): %(message)s')

test_router = simplefetch.SSH("192.168.1.1" port=22, user="admin", passwd="secret", network_os="cisco-ios")
print (test_router.fetchdata("show version"))
test_router.disconnect() 

Example with Multithreading Python3

# -*- coding: utf-8 -*-
import simplefetch
import logging, time
from threading import Thread
timestr = time.strftime("%Y%m%d-%H%M%S")
log_filename="connection_logs"+str(timestr)+".txt"

#================== Logging
logging.basicConfig(filename=log_filename, filemode='a', level=logging.INFO,
                    format='%(asctime)s [%(name)s] %(levelname)s (%(threadName)-10s): %(message)s')

#==================USER, PASS, ROUTER_LIST==============
username= "username"
password="password"
router_list=["router_name1","192.168.1.1"]

#================== MEMORY check function for huawei devices
def get_memory_usages(router_name):
	try:
		connection = simplefetch.SSH(user=username, passwd=password, network_os="huawei-vrp")
		try:
			display_health_raw= connection.fetchdata("display startup")
			print (router_name)
			print (display_health_raw)
		except:
			logging.warning ("could not get output of command from %s",router_name)
			connection.disconnect()
	except:
		logging.warning ("connection unsuccessful to %s",router_name)

#================== multithread part 
import concurrent.futures 
with concurrent.futures.ThreadPoolExecutor(max_workers=10) as executor: 
	for items in router_list:
		executor.submit(get_memory_usages,items) 
executor.shutdown(wait=True)

Project details


Download files

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

Source Distribution

simplefetch-0.1.0.tar.gz (4.6 kB view hashes)

Uploaded Source

Built Distribution

simplefetch-0.1.0-py3-none-any.whl (10.3 kB view hashes)

Uploaded Python 3

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