Skip to content

GuitarSoul/cisco_to_netbox_to_zabbix_import

Folders and files

NameName
Last commit message
Last commit date

Latest commit

44a6337 · May 5, 2022

History

46 Commits
Apr 22, 2022
Apr 22, 2022
Apr 22, 2022
Apr 26, 2022
Apr 26, 2022
May 5, 2022
Apr 26, 2022
Apr 22, 2022
Apr 22, 2022
Apr 22, 2022
Apr 22, 2022
Apr 22, 2022

Repository files navigation

(Cisco + ESXI VM) -> Netbox -> Zabbix

Tested on Netbox 3.2 +

Tested on Zabbix 6 +

Cisco Devices:

  • Script uses "confluence url page" or "txt file in the same folder" to get ip list to connect
  • Script gathers all needed info by ssh
  • Parses data and writes into api/"device_name".csv files in json format (Some examples are in api folder)
  • Creates entities in Netbox (devices, interfaces, prefixes, ip addresses, vlans, cdp connections, inventory)
  • Zabbix script goes through all devices and creates/updates hosts on Zabbix server

ESXI VM:

  • Script gathers all needed info from ESXI server by "pyVim" module
  • Creates entities in Netbox

Details:

  • Script's main purpose is full integration between Cisco and Netbox (https://netbox.readthedocs.io/en/stable/)
  • Script works fine with IOS, NX-OS, XR, SG-220, Air-OS but can have some problems with "slow" devices when getting responce takes a long time.
  • Use -- help when running script in cmd

To run the script once a day in a background just add this line to crontab file:

  • 0 0 * * * (cd /path_to_script_folder && env/bin/python Cisco_To_Json.py -f confluence && env/bin/python Cisco_To_Netbox.py -l all && env/bin/python Netbox_To_Zabbix.py ) > /path_to_log_folder/Cron_Logs.txt
  • Examples to run basic script "Script Cisco_To_Json.py -f confluence | all | test"

Attention:

  • Script Cisco_To_Netbox uses custom fields, you must add these fields to write acl information
  • IMPORTANT! Devices are associated with sites by their hostname. Hostname MUST include a site_name. For example 78-SITE_NAME-ASW01. 78 - is a city code.
  • For Cisco ASR edit chars = ['RP/0/RSP0/CPU0:', '>', '#'] variable in Cisco_To_json.py according to your asr devices hostnames to cut theese chars off
  • Highly recommended to include "router" and "switch_layer_3" to device_role list in Netbox, this is a cryteria by which script adds description to prefixes

image

  • Script might fail trying to connect to some devices ,especially when connecting to more than 20 devices simultaneously in a thread.
  • Script worked fine and was tested in one Enterprise network environment only, and some templates were edited to work in that environment!

Instructions:

Create all needed folders first

image

  1. Edit yaml file
  2. Run a .py file in cmd or all of them via Cron, use --help to see all possible arguments

image

Снимок