Hotwired
hotwired sends SNMP queries to defined CIDR ranges and populates SQL database based on nodes found. Some particular problems it tries to deal with:
- Only discover one node once
- To that effect it has priority list of idDescr lo0.0, loopback0, vlan2 etc. Higher priority will always replace lower priority interface (say you have MGMT in loop0 but giga0/2.42 has valid MGMT address towards L2 metro)
- Tries to handle gracefully renumbering, renaming, etc
Install
Add this line to your application's Gemfile:
gem 'hotwired'
And then execute:
$ bundle install
Or install it yourself as:
$ gem install hotwired
Usage
- gem install hotwired
- hotwired
- ^C (break it)
- edit ~/.config/hotwired/config
- put hotwired in crontab as hotwired|mail -E -s 'new nodes found' [email protected]_
Config
- You need to configure SNMP community
- You need to define CIDR to poll and CIDRs to ignore (subset of those you poll)
- CIDR in example config is list, but can be replaced with 'string' which points to file, where CIDRs are listed
CLI execute sample
careline@careline:~/.config/hotwired -h
Usage: hotwired [options] [argument]
-d, --debug Debugging on
-p, --poll Poll CIDR [argument]
-r, --remove Remove [argument] from DB
-m, --max-delete Maximum number to delete, default 1
-o, --purge-old Remove records order than [argument] days
-s, --simulate Simulate, do not change DB
-h, --help Display this help message.
% hotwired -p 192.0.2.0/28 # poll specific CIDR
% hotwired -r core-sw1 # remove specific record
% hotwired -o 7 # remore records older than 7 days
careline@careline:~/.config/hotwired
% ll 22-04-17 - 16:42:14
总用量 20K
-rw-r--r-- 1 careline careline 245 4月 17 16:39 config
-rw-r--r-- 1 careline careline 12K 4月 17 16:42 hotwired.db
-rw-r--r-- 1 careline careline 67 4月 17 16:09 log
careline@careline:~/.config/hotwired
% rm -rf hotwired.db 22-04-17 - 16:43:10
careline@careline:~/.config/hotwired
% hotwired -d 22-04-17 - 16:43:12
I, [2022-04-17T16:43:18.909105 #599481] INFO -- : ptr [R1.cisco.com] sysName [RUBY_R1.cisco.com] ip [192.168.8.80]
I, [2022-04-17T16:43:18.918306 #599481] INFO -- : ptr [R4.cisco.com] sysName [R4.cisco.com] ip [192.168.8.83]
I, [2022-04-17T16:43:18.925623 #599481] INFO -- : ptr [R10.cisco.com] sysName [R10.cisco.com] ip [192.168.8.89]
I, [2022-04-17T16:43:18.930507 #599481] INFO -- : ptr [R5.cisco.com] sysName [R5.cisco.com] ip [192.168.8.84]
I, [2022-04-17T16:43:18.936821 #599481] INFO -- : ptr [R2.cisco.com] sysName [R2.cisco.com] ip [192.168.8.81]
I, [2022-04-17T16:43:18.942099 #599481] INFO -- : ptr [R8.cisco.com] sysName [R8.cisco.com] ip [192.168.8.87]
I, [2022-04-17T16:43:18.947214 #599481] INFO -- : ptr [R3.cisco.com] sysName [R3.cisco.com] ip [192.168.8.82]
I, [2022-04-17T16:43:18.953543 #599481] INFO -- : ptr [R7.cisco.com] sysName [R7.cisco.com] ip [192.168.8.86]
I, [2022-04-17T16:43:18.969960 #599481] INFO -- : ptr [R9.cisco.com] sysName [R9.cisco.com] ip [192.168.8.88]
Development
After checking out the repo, run bin/setup
to install dependencies. 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 the created tag, and push the .gem
file to rubygems.org.
Contributing
Bug reports and pull requests are welcome on GitHub at https://github.com/ciscolive/hotwired-ruby. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the code of conduct.
License
The gem is available as open source under the terms of the MIT License.
Code of Conduct
Everyone interacting in the Hotwired project's codebases, issue trackers, chat rooms and mailing lists is expected to follow the code of conduct.