https://github.com/admiralspark/NetSpark-Scripts
Netmiko-based scripts to assist the Network Administrators and Engineers of the world!
https://github.com/admiralspark/NetSpark-Scripts
Last synced: 10 months ago
JSON representation
Netmiko-based scripts to assist the Network Administrators and Engineers of the world!
- Host: GitHub
- URL: https://github.com/admiralspark/NetSpark-Scripts
- Owner: admiralspark
- License: gpl-3.0
- Created: 2016-10-15T05:03:53.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2021-01-18T07:40:30.000Z (about 5 years ago)
- Last Synced: 2024-11-07T15:43:33.662Z (over 1 year ago)
- Language: Python
- Homepage:
- Size: 95.7 KB
- Stars: 53
- Watchers: 10
- Forks: 9
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-network-automation - NetSpark-Scripts - Netmiko-based scripts to assist the Network Administrators and Engineers of the world! (Tools / NETCONF)
README
Netspark-Scripts
Multithreaded parallel network command execution, simplified, for network engineers of the world!

## Table of Contents
- [Prerequisites](#prerequisites)
- [Installation](#installation)
- [Usage](#usage)
- [Contributing](#contributing)
## Prerequisites
For everything:
```pip install netmiko docopt getpass```
## Installation
Clone the repo, and run the scripts using Python 3. This is NOT a library or module, it is meant to be templates and examples that you can use, copy, and make better.
## Usage
Create your 'customer' file and 'credentials' file based on exampleCSV.md.
#### python netspark.py -h
This script is the master controller script. It will make the necessary
commands to run whatever is needed against whatever is needed.
Usage:
netspark.py -h | --help
netspark.py (--info COMMAND | --config CONFIGFILE) (--csv FILENAME | --db QUERYNAME | --ip IPADDR) [-c CREDFILE] [--debug]
Options:
-h, --help Shows this menu.
-d, --debug Print debug information. This is the most verbose
option.
--info COMMAND This will run regular show commands
--config CONFIGFILE This will run configuration commands
--csv FILENAME Input file if using CSV [default: test.csv]
--db QUERYNAME SQL field: 'groupname' [default: test]
--ip IPADDR Single IP address of test switch
-c CREDFILE Crednetials file [default: credentials.csv]
### Examples:
To run write mem on every host in your csv file switches.csv (assuming you only have one credentials.csv):
`python netspark.py --info "wr mem" --csv switches.csv`
To make a config change with many lines, such as changing a local account, you'd make a text file with the lines to change it which will then be run against the hosts. For example, lets make a changeuser.txt:
```
exit
conf t revert time 5
username secretbackdoor privilege 15 password Thiscantbereal!
```
--config runs in the context of config mode, which is why I use an exit above.
Then you'd run it like so: `python netspark.py --config changeuser.txt --csv switches.csv`
This command supports all of the netmiko classes of devices, but I designed it to be used with Cisco gear since that's what most of us run. You just need to specify a different device object in your switches.csv file to work with new stuff.
Final example, lets say you have a rogue sysadmin at one branch who refuses to use newer credentials/radius/whatever. So you have a different nonstandard set of creds and routers.
`python netspark.py --info "configure confirm" --csv crappyrouters.csv -c crappycreds.csv`
### Caveats
This is multithreaded and I haven't added error handling. I force all of my changes to use config revision (the 'conf t revert time 5' above) as a workaround until I have good error handling in place. It's laziness and a lack of time, it would be decently easy to implement.
The multiprocess code I wrote is messy because of context issues. I plan on making that part into a library later on, but something something time and laziness.
The default number of simultaneous executions is 8, I have run this successfully at 50x simultaneous on a network of 400+ devices but keep in mind that they will return output at a rate of 50x, and it spits it out to STDOUT, so you might want to just leave it.
I will add support for --db and --ip later on, probably --db first because I want this to dive into the rest of my open-source stack I'm slowly writing about on https://teamignition.us so that this all ties in beautifully.
## The Example_Scripts folder
This is old code and alternative projects. It is useful reference material so I'm leaving it up, but it will not be updated.
## Contributing
All patches welcome! Please read [CONTRIBUTING.md](https://github.com/admiralspark/netspark-scripts/CONTRIBUTING.md) for furthers details...whenever I make it. For now, submit PR's and we'll chat about them.
## License
GNU GPL Version 3 - see the [LICENSE](https://github.com/admiralspark/NetSpark-Scripts/blob/master/LICENSE) file for details