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
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
simplefetch-0.1.0.tar.gz
(4.6 kB
view hashes)
Built Distribution
Close
Hashes for simplefetch-0.1.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 76985eb8c40ae297fa2271ee17cb1085e4fd79387272cc65cc54a7f2df1aacf8 |
|
MD5 | c26498427ad1b8834ea2e2f4527ea8f6 |
|
BLAKE2b-256 | 724ec9dbdb540f1250b4e9d01742d05a6d773ba68d2bdf8750a31ab8f6eda88b |