Netutils
Netutils is a set of utilities to operate network equipment such as routers, switches, firewalls, wireless controller and so on. Netutils currently can:
- automatically find network equipment,
- collect configurations,
- deploy certificate files to switches,
- reboot switches in safer order,
- locate a switch and port to which a host connects to,
- add/delete a MAC address filter,
- shut down or bring up a port, and so on.
Features
- vendor lock free
- multiple accounts support
- auto neighbor discovery using Link Layer Discovery Protocol (LLDP) and Cisco Discovery Protocol (CDP)
- static neighbor definition support
Acutually Tested Equipment
- Cisco
- C1812J, catalyst 6500, 3560, 2960
- AlaxalA
- AX8600, AX3800, AX3650, AX2530, AX2200, AX620
- Palo Alto Networks
- PA-5220, PA-3020, PA-850
- Aruba wireless LAN controller
- Aruba7210-JP
- NEC IX series
- IX2215, Palo Alto Networks
Installation
$ git clone https://github.com/ohmori7/netutils
$ cd netutils
$ bundle install
$ cp config/config-sample.rb config/config.rb
$ vi config/config.rb
Usage
$ bundle exec netutils/bin/config-gets
$ bundle exec netutils/bin/alaxala-deploy
$ bundle exec netutils/bin/host-locate-on-demand
$ bundle exec netutils/bin/acl
$ bundle exec netutils/bin/port-shutdown
Example
For example, one can locate a host of a given IP address as follows:
$ bundle exec bin/host-locate-on-demand 10.0.0.1
locating directly connected router for 10.0.0.1...
"tottori-c01" (192.168.0.1)
resolving MAC address for 10.0.0.1... found
10.0.0.1 dead.beef.dead on VRF "1" VLAN1001
locating MAC address dead.beef.dead...
tottori-c01 (192.168.0.1) GigabitEthernet 0/1
koyama-e01 (192.168.0.2) GigabitEthernet 0/24
For more detailed information, please consult with a help message of a command.
Why not SNMP???
Ones may think why SNMP is not used to automatically find network equipment. The reason is that we have experienced network stalls due to SNMP. Receiving the small number of SNMP packets, our core switch, Cisco catalyst 6500, could not forward any packets due to high CPU utilization even there was no SNMP configuration enabled. This was a design issue that all SNMP packets were always punt to CPU of a routing engine. We have then decided to employ LLDP and CDP instead of SNMP.
TODO
- clean up code, name space issues, and switch class method abandon
- more gemification
- remove global methods
- use yaml for configuration
- out-of-band CLI output message handling (partially done but..)
- restructure class methods and variables
- introduce test codes
- more product support
- netconf or other REST API support
Development
After checking out the repo, run bin/setup
to install dependencies. Then, run rake spec
to run the tests. You can also run bin/console
for an interactive prompt that will allow you to experiment.
To install this gem onto your local machine, run bundle exec rake install
. To release a new version, update the version number in version.rb
, and then run bundle exec rake release
, which will create a git tag for the version, push git commits and tags, and push the .gem
file to rubygems.org.
Contributing
Bug reports and pull requests are welcome on GitHub at https://github.com/ohmori7/netutils.