{"id":5566,"date":"2020-09-21T14:54:09","date_gmt":"2020-09-21T21:54:09","guid":{"rendered":"https:\/\/blogs.infoblox.com\/?p=5566"},"modified":"2020-09-21T14:54:09","modified_gmt":"2020-09-21T21:54:09","slug":"hacking-infoblox-discovery-for-fun-and-profit-its-just-another-csv","status":"publish","type":"post","link":"https:\/\/www.infoblox.com\/blog\/community\/hacking-infoblox-discovery-for-fun-and-profit-its-just-another-csv\/","title":{"rendered":"Hacking Infoblox Discovery for Fun and Profit, It&#8217;s Just Another CSV"},"content":{"rendered":"<p>An IPAM solution is not very useful unless it accurately reflects the state of your network. The discovery features in NIOS have always been one of the great benefits of having Infoblox DDI.\u00a0<a href=\"https:\/\/www.infoblox.com\/products\/network-insight\/\">Network Insight<\/a>\u00a0and\u00a0<a href=\"https:\/\/www.infoblox.com\/products\/netmri\/\">NetMRI<\/a>\u00a0focus on discovery of network gear and what is connected to it. The\u00a0<a href=\"https:\/\/docs.infoblox.com\/display\/nios85\/Configuring+vDiscovery+Jobs\">vDiscovery<\/a>\u00a0feature adds the ability to discover virtual infrastructure in both public and private cloud environments. All of these working together can give you a super accurate picture of what exists on your network\u2026if all your gear is supported.<\/p>\n<p>As much as it may seem like it, the discovery features are not magic. Infoblox engineers had to figure out how each\u00a0<a href=\"https:\/\/docs.infoblox.com\/display\/N72N8DSL\/Device+Support+List\">supported vendor\u2019s device<\/a>\u00a0works and how to query its details. New vendors, new models, and new firmware versions can all affect Infoblox\u2019s ability to properly discover your network gear. In many cases, customers are the ones driving Infoblox to make additions to the support list. But what do you do if you have an unsupported device and can\u2019t\u00a0<em>(or don\u2019t want to)<\/em>\u00a0wait for the formal device support request process?<\/p>\n<p>You could just do it yourself. \ud83d\ude0f<\/p>\n<h3 id=\"using-netmris-example\">USING NETMRI\u2019S EXAMPLE<\/h3>\n<p>Because NetMRI is not part of the NIOS grid, it is a good model for figuring out how to upload our own discovery data from something external. The problem is we don\u2019t really know how it works under the hood. But we have hints from the Audit Log on the grid master.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-5567 size-large\" src=\"https:\/\/blogs.infoblox.com\/wp-content\/uploads\/netmri-audit-log-1024x129.png\" alt=\"\" width=\"1024\" height=\"129\" srcset=\"https:\/\/www.infoblox.com\/blog\/wp-content\/uploads\/netmri-audit-log-1024x129.png 1024w, https:\/\/www.infoblox.com\/blog\/wp-content\/uploads\/netmri-audit-log-300x38.png 300w, https:\/\/www.infoblox.com\/blog\/wp-content\/uploads\/netmri-audit-log-768x97.png 768w, https:\/\/www.infoblox.com\/blog\/wp-content\/uploads\/netmri-audit-log.png 1288w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>Every time NetMRI submits new discovery data, it calls a\u00a0<code>DataUploadInit<\/code>\u00a0function followed by\u00a0<code>SetDiscoveryCSV<\/code>. After searching the WAPI documentation, <code>SetDiscoveryCSV<\/code>\u00a0appears to be a standard WAPI function tied to the\u00a0<code>fileop<\/code> object type. This is great because anything that can use the WAPI via REST can theoretically submit new discovery data. You can view the WAPI doc on your own grid using the following URL and substitue your own grid master host\/IP, <code>https:\/\/gm\/wapidoc\/objects\/fileop.html#upload-setdiscoverycsv<\/code>. Here is a screenshot from my lab GM\u2019s copy.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-5568\" src=\"https:\/\/blogs.infoblox.com\/wp-content\/uploads\/netmri-setdiscoverycsv-doc.png\" alt=\"\" width=\"964\" height=\"331\" srcset=\"https:\/\/www.infoblox.com\/blog\/wp-content\/uploads\/netmri-setdiscoverycsv-doc.png 964w, https:\/\/www.infoblox.com\/blog\/wp-content\/uploads\/netmri-setdiscoverycsv-doc-300x103.png 300w, https:\/\/www.infoblox.com\/blog\/wp-content\/uploads\/netmri-setdiscoverycsv-doc-768x264.png 768w\" sizes=\"auto, (max-width: 964px) 100vw, 964px\" \/><\/p>\n<p>Now we have to figure out how to format our CSV properly and we should be good to go.<\/p>\n<h3 id=\"support-bundle-to-the-rescue\">SUPPORT BUNDLE TO THE RESCUE<\/h3>\n<p>When I was first looking into this, I was afraid I\u2019d need to do something like\u00a0<a href=\"https:\/\/en.wikipedia.org\/wiki\/Man-in-the-middle_attack\">MitM<\/a> the connection between NetMRI and the grid master in order to capture the CSV file being uploaded while it was in transit. Thankfully, that was unnecessary due to Infoblox\u2019s <a href=\"https:\/\/docs.infoblox.com\/display\/nios85\/Downloading+Support+Bundles\">support bundle<\/a>\u00a0functionality.<\/p>\n<p>If you have ever created an Infoblox support ticket, you have likely also been asked to generate and attach a support bundle to the ticket. It\u2019s a tar\/gzipped file containing a bunch of low-level diagnostic stuff from the appliance it was generated on (log files, config files, etc). It is also a great resource for better understanding Infoblox internals or even trying to solve your own support issues if you have the time and patience.<\/p>\n<p>While poking around in my lab GM\u2019s support bundle, I noticed a folder called\u00a0<code>\/storage\/discovery\/last_csv_import<\/code>\u00a0which looked very promising. It contained another numbered folder likely tied to an internal ID of some sort and within that was a file called\u00a0<code>import_file<\/code>.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-5569\" src=\"https:\/\/blogs.infoblox.com\/wp-content\/uploads\/netmri-support-bundle-import_file.png\" alt=\"\" width=\"736\" height=\"269\" srcset=\"https:\/\/www.infoblox.com\/blog\/wp-content\/uploads\/netmri-support-bundle-import_file.png 736w, https:\/\/www.infoblox.com\/blog\/wp-content\/uploads\/netmri-support-bundle-import_file-300x110.png 300w\" sizes=\"auto, (max-width: 736px) 100vw, 736px\" \/><\/p>\n<p>After extracting the file, it appeared to be a complete copy of the file NetMRI had submitted with all column headers intact. \ud83c\udf89 Hooray! \ud83c\udf89<\/p>\n<h3 id=\"csv-format\">CSV FORMAT<\/h3>\n<p>Here is a list of all the headers included in the CSV file we pulled from the support bundle:<\/p>\n<ul>\n<li>ip_address<\/li>\n<li>ap_ip_address<\/li>\n<li>ap_name<\/li>\n<li>ap_ssid<\/li>\n<li>bgp_as<\/li>\n<li>bridge_domain<\/li>\n<li>device_contact<\/li>\n<li>device_location<\/li>\n<li>device_model<\/li>\n<li>device_vendor<\/li>\n<li>discovered_name<\/li>\n<li>discoverer<\/li>\n<li>endpoint_groups<\/li>\n<li>first_discovered_timestamp<\/li>\n<li>last_discovered_timestamp<\/li>\n<li>mac_address<\/li>\n<li>netbios_name<\/li>\n<li>network_component_contact<\/li>\n<li>network_component_description<\/li>\n<li>network_component_ip<\/li>\n<li>network_component_location<\/li>\n<li>network_component_model<\/li>\n<li>network_component_name<\/li>\n<li>network_component_port_description<\/li>\n<li>network_component_port_name<\/li>\n<li>network_component_port_number<\/li>\n<li>network_component_type<\/li>\n<li>network_component_vendor<\/li>\n<li>os<\/li>\n<li>port_duplex<\/li>\n<li>port_link_status<\/li>\n<li>port_speed<\/li>\n<li>port_status<\/li>\n<li>port_vlan_name<\/li>\n<li>port_vlan_number<\/li>\n<li>tenant<\/li>\n<li>vrf_description<\/li>\n<li>vrf_name<\/li>\n<li>vrf_rd<\/li>\n<li>task_name<\/li>\n<\/ul>\n<p>And here are the contents of the CSV I used as my initial test file.\u00a0<em>(Stargate fan. Sorry, not sorry)<\/em><\/p>\n<div class=\"highlight\">\n<pre><code class=\"language-plaintext hljs\" data-lang=\"plaintext\">ip_address,device_location,device_model,device_vendor,discovered_name,discoverer,last_discovered_timestamp,task_name\r\n\"192.168.0.9\",\"Dakara\",\"Stargate\",\"Altera\",\"sg01\",\"MyDiscoveryScript\",\"2020-09-14 21:34:18\",\"Stargate_Checks\"\r\n<\/code><\/pre>\n<\/div>\n<p>Most of these fields correspond to the fields in the\u00a0<code>discoverydata<\/code>\u00a0struct which you can view in your GM\u2019s WAPI documentation (<code>https:\/\/gm\/wapidoc\/additional\/structs.html#struct-discoverydata<\/code>). But there are a few important differences.<\/p>\n<p><code>ip_address<\/code>\u00a0<strong>is mandatory<\/strong>\u00a0in the CSV file but not listed in the struct. The struct has\u00a0<code>first_discovered<\/code>\u00a0and\u00a0<code>last_discovered<\/code>\u00a0which are Epoch seconds, but the CSV uses\u00a0<code>first_discovered_timestamp<\/code>\u00a0and\u00a0<code>last_discovered_timestamp<\/code>\u00a0which are UTC timestamps in\u00a0<code>yyyy-MM-dd HH:mm:ss<\/code>\u00a0format. Everything else\u00a0<em>seems<\/em>\u00a0to be a 1:1 match with the discoverydata struct. So, you can likely add and use additional columns NetMRI doesn\u2019t currently send like fields related to vDiscovery.<\/p>\n<p>The other thing I noticed about the discovery timestamp values is you only need to include\u00a0<code>last_discovered_timestamp<\/code>\u00a0if you are planning to merge the discovery data with existing data. Infoblox will automatically set the\u00a0<code>first_discovered<\/code>\u00a0value based on the\u00a0<code>last_discovered_timestamp<\/code>\u00a0the first time you import data for a given IP. If you choose to replace the data instead, you will need to supply both values or else it will clear the existing\u00a0<code>first_discovered<\/code>\u00a0value.<\/p>\n<h3 id=\"a-word-about-permissions\">A WORD ABOUT PERMISSIONS<\/h3>\n<p>The NetMRI documentation does not really go into detail about the minimum required permissions for the Infoblox user it authenticates to the grid master with. While you could use an existing superuser account, it is not recommended from a security standpoint. Ideally, you would have a dedicated user for discovery data submission. After some trial and error, the minimum permissions you need are:<\/p>\n<ul>\n<li>Global &#8211; Grid Permissions &#8211; Network Discovery &#8211; Read\/Write<\/li>\n<li>Object &#8211; &lt;the network view object&gt; &#8211; Read-Only<\/li>\n<\/ul>\n<p>If you are targeting more than a single network view, you can either add each one individually or just give the read access for \u201cAll Network Views\u201d. Here is a screenshot of the resulting permissions in the GUI.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-5570\" src=\"https:\/\/blogs.infoblox.com\/wp-content\/uploads\/netmri-disco-user-permissions.png\" alt=\"\" width=\"805\" height=\"305\" srcset=\"https:\/\/www.infoblox.com\/blog\/wp-content\/uploads\/netmri-disco-user-permissions.png 805w, https:\/\/www.infoblox.com\/blog\/wp-content\/uploads\/netmri-disco-user-permissions-300x114.png 300w, https:\/\/www.infoblox.com\/blog\/wp-content\/uploads\/netmri-disco-user-permissions-768x291.png 768w\" sizes=\"auto, (max-width: 805px) 100vw, 805px\" \/><\/p>\n<p>Here is an example of how to create the group, user, and permissions using\u00a0<a href=\"https:\/\/github.com\/rmbolger\/Posh-IBWAPI\">Posh-IBWAPI<\/a>.<\/p>\n<div class=\"highlight\">\n<pre><code class=\"language-powershell hljs\" data-lang=\"powershell\"><span class=\"hljs-variable\">$groupName<\/span> = <span class=\"hljs-string\">'DiscoveryUsers'<\/span>\r\n<span class=\"hljs-built_in\">New-IBObject<\/span> admingroup <span class=\"hljs-literal\">-IBObject<\/span> <span class=\"hljs-selector-tag\">@<\/span>{name=<span class=\"hljs-variable\">$groupName<\/span>; access_method=<span class=\"hljs-selector-tag\">@<\/span>(<span class=\"hljs-string\">'API'<\/span>)}\r\n<span class=\"hljs-built_in\">New-IBObject<\/span> adminuser  <span class=\"hljs-literal\">-IBObject<\/span> <span class=\"hljs-selector-tag\">@<\/span>{name=<span class=\"hljs-string\">'disco-user1'<\/span>; password=<span class=\"hljs-string\">'&lt;the password&gt;'<\/span>; admin_groups=<span class=\"hljs-selector-tag\">@<\/span>(<span class=\"hljs-variable\">$groupName<\/span>)}\r\n<span class=\"hljs-built_in\">New-IBObject<\/span> permission <span class=\"hljs-literal\">-IBObject<\/span> <span class=\"hljs-selector-tag\">@<\/span>{<span class=\"hljs-built_in\">group<\/span>=<span class=\"hljs-variable\">$groupName<\/span>; permission=<span class=\"hljs-string\">'WRITE'<\/span>; resource_type=<span class=\"hljs-string\">'NETWORK_DISCOVERY'<\/span>}\r\n\r\n<span class=\"hljs-comment\"># For adding read to a specific network view<\/span>\r\n<span class=\"hljs-variable\">$viewRef<\/span> = (<span class=\"hljs-built_in\">Get-IBObject<\/span> networkview <span class=\"hljs-literal\">-Filter<\/span> <span class=\"hljs-string\">'name=default'<\/span>).<span class=\"hljs-string\">'_ref'<\/span>\r\n<span class=\"hljs-built_in\">New-IBObject<\/span> permission <span class=\"hljs-literal\">-IBObject<\/span> <span class=\"hljs-selector-tag\">@<\/span>{<span class=\"hljs-built_in\">group<\/span>=<span class=\"hljs-variable\">$groupName<\/span>; permission=<span class=\"hljs-string\">'READ'<\/span>; object=<span class=\"hljs-variable\">$viewRef<\/span>}\r\n\r\n<span class=\"hljs-comment\"># For adding read to all network views<\/span>\r\n<span class=\"hljs-built_in\">New-IBObject<\/span> permission <span class=\"hljs-literal\">-IBObject<\/span> <span class=\"hljs-selector-tag\">@<\/span>{<span class=\"hljs-built_in\">group<\/span>=<span class=\"hljs-variable\">$groupName<\/span>; permission=<span class=\"hljs-string\">'READ'<\/span>; resource_type=<span class=\"hljs-string\">'NETWORK_VIEW'<\/span>}\r\n<\/code><\/pre>\n<\/div>\n<h3 id=\"performing-a-test-run\">PERFORMING A TEST RUN<\/h3>\n<p>With our CSV file ready to go, we can run the following via\u00a0<a href=\"https:\/\/github.com\/rmbolger\/Posh-IBWAPI\">Posh-IBWAPI<\/a>\u00a0using its super awesome\u00a0<code>Send-IBFile<\/code>\u00a0function.\u00a0<em>(This assumes you\u2019ve already setup a profile with your discovery user using\u00a0<code>Set-IBConfig<\/code>)<\/em><\/p>\n<div class=\"highlight\">\n<pre><code class=\"language-powershell hljs\" data-lang=\"powershell\"><span class=\"hljs-built_in\">Send-IBFile<\/span> setdiscoverycsv .\\discovery.csv <span class=\"hljs-literal\">-FunctionArgs<\/span> <span class=\"hljs-selector-tag\">@<\/span>{merge_data=<span class=\"hljs-variable\">$true<\/span>; network_view=<span class=\"hljs-string\">'default'<\/span>}\r\n<\/code><\/pre>\n<\/div>\n<p>If you can\u2019t or don\u2019t want to use Posh-IBWAPI, it\u2019s a little more cumbersome because you have to make 3 separate REST calls to follow the standard file upload process with the WAPI. Here\u2019s an example using curl on linux.\u00a0<em>(If you\u2019re using curl from Windows, you\u2019ll need to escape the JSON differently in the third command)<\/em><\/p>\n<div class=\"highlight\">\n<pre><code class=\"language-bash hljs\" data-lang=\"bash\"><span class=\"hljs-comment\"># This call should return JSON containing \"token\" and \"url\" values.<\/span>\r\n<span class=\"hljs-comment\"># The url must replace the example URL in the the next command<\/span>\r\n<span class=\"hljs-comment\"># The token must replace the token value in the third command (don't include<\/span>\r\n<span class=\"hljs-comment\"># the trailing \\n if it exists)<\/span>\r\ncurl -k1 -u admin:infoblox -X POST <span class=\"hljs-string\">\"https:\/\/gm\/wapi\/v2.10\/fileop?_function=uploadinit\"<\/span>\r\n\r\n<span class=\"hljs-comment\"># Replace the url using the value returned by the first command<\/span>\r\ncurl -k1 -u admin:infoblox -F name=discovery.csv -F filedata=@discovery.csv <span class=\"hljs-string\">\"https:\/\/192.168.0.2\/http_direct_file_io\/req_id-UPLOAD-0000000000000001\/import_file\"<\/span>\r\n\r\n<span class=\"hljs-comment\"># Replace the token using the value returned by the first command<\/span>\r\ncurl -k1 -u admin:infoblox -X POST <span class=\"hljs-string\">\"https:\/\/gm\/wapi\/v2.10\/fileop?_function=setdiscoverycsv\"<\/span> -H <span class=\"hljs-string\">\"Content-Type: application\/json\"<\/span> -d <span class=\"hljs-string\">'{\"token\":\"xxxxxxxxxxxx\", \"merge_data\":true, \"network_view\":\"default\"}'<\/span>\r\n<\/code><\/pre>\n<\/div>\n<p>Unfortunately, the WAPI does not return anything useful to indicate the discovery data was processed successfully. You will only get an error if there was a functional problem with the REST call itself. If things worked, you should see your discovery data in the IPAM view for the IP address associated with your discovery data. Mine looks like this from our sample data.\u00a0<em>(Don\u2019t forget you can customize which fields are shown using the little gear icon in the upper right)<\/em><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-5571\" src=\"https:\/\/blogs.infoblox.com\/wp-content\/uploads\/netmri-discovered-data-success.png\" alt=\"\" width=\"1251\" height=\"588\" srcset=\"https:\/\/www.infoblox.com\/blog\/wp-content\/uploads\/netmri-discovered-data-success.png 1251w, https:\/\/www.infoblox.com\/blog\/wp-content\/uploads\/netmri-discovered-data-success-300x141.png 300w, https:\/\/www.infoblox.com\/blog\/wp-content\/uploads\/netmri-discovered-data-success-1024x481.png 1024w, https:\/\/www.infoblox.com\/blog\/wp-content\/uploads\/netmri-discovered-data-success-768x361.png 768w\" sizes=\"auto, (max-width: 1251px) 100vw, 1251px\" \/><\/p>\n<h1 id=\"troubleshooting\">TROUBLESHOOTING<\/h1>\n<p>If your WAPI call to SetDiscoveryCSV appears to have completed successfully and you do not see your test data in IPAM for the associated IP, the discovery engine may have had a problem parsing your CSV for some reason. The good news is there is a log file that should be able to tell you what is wrong. The bad news is it is buried in the support bundle. Generate and download a fresh one and then look in <code>\/infoblox\/var\/discovery_csv_error<\/code>\u00a0for the associated log file.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-5572\" src=\"https:\/\/blogs.infoblox.com\/wp-content\/uploads\/netmri-discovery-error-log.png\" alt=\"\" width=\"736\" height=\"257\" srcset=\"https:\/\/www.infoblox.com\/blog\/wp-content\/uploads\/netmri-discovery-error-log.png 736w, https:\/\/www.infoblox.com\/blog\/wp-content\/uploads\/netmri-discovery-error-log-300x105.png 300w\" sizes=\"auto, (max-width: 736px) 100vw, 736px\" \/><\/p>\n<p><em>NOTE: My lab grid is on NIOS 8.5.1. Readers have noted separate discovery logs may not exist on previous NIOS versions. If you don\u2019t see them, check the main\u00a0<code>infoblox.log<\/code>\u00a0file for lines containing \u201cdiscovery_gm_sorter\u201d.<\/em><\/p>\n<h3 id=\"wrapping-up\">WRAPPING UP<\/h3>\n<p>We\u2019ve nailed down everything we need to do in order to submit new discovery data. All that remains is writing the tool\/script to query our unsupported devices and generate the appropriate CSV file. Now go forth and discover!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>An IPAM solution is not very useful unless it accurately reflects the state of your network. The discovery features in NIOS have always been one of the great benefits of having Infoblox DDI.\u00a0Network Insight\u00a0and\u00a0NetMRI\u00a0focus on discovery of network gear and what is connected to it. The\u00a0vDiscovery\u00a0feature adds the ability to discover virtual infrastructure in both [&hellip;]<\/p>\n","protected":false},"author":341,"featured_media":4249,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"_genesis_hide_title":false,"_genesis_hide_breadcrumbs":false,"_genesis_hide_singular_image":false,"_genesis_hide_footer_widgets":false,"_genesis_custom_body_class":"","_genesis_custom_post_class":"","_genesis_layout":"","footnotes":""},"categories":[3],"tags":[145,52],"class_list":{"0":"post-5566","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-community","8":"tag-netmri","9":"tag-nios","10":"entry"},"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.3 (Yoast SEO v27.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Hacking Infoblox Discovery for Fun and Profit, It&#039;s Just Another CSV<\/title>\n<meta name=\"description\" content=\"An IPAM solution is not very useful unless it accurately reflects the state of your network. The discovery features in NIOS have always been one of the great benefits of having Infoblox DDI.\u00a0Network Insight\u00a0and\u00a0NetMRI\u00a0focus on discovery of network gear and what is connected to it. The\u00a0vDiscovery\u00a0feature adds the ability to discover virtual infrastructure in both public and private cloud environments. All of these working together can give you a super accurate picture of what exists on your network\u2026if all your gear is supported.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.infoblox.com\/blog\/community\/hacking-infoblox-discovery-for-fun-and-profit-its-just-another-csv\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Hacking Infoblox Discovery for Fun and Profit, It&#039;s Just Another CSV\" \/>\n<meta property=\"og:description\" content=\"An IPAM solution is not very useful unless it accurately reflects the state of your network. The discovery features in NIOS have always been one of the great benefits of having Infoblox DDI.\u00a0Network Insight\u00a0and\u00a0NetMRI\u00a0focus on discovery of network gear and what is connected to it. The\u00a0vDiscovery\u00a0feature adds the ability to discover virtual infrastructure in both public and private cloud environments. All of these working together can give you a super accurate picture of what exists on your network\u2026if all your gear is supported.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.infoblox.com\/blog\/community\/hacking-infoblox-discovery-for-fun-and-profit-its-just-another-csv\/\" \/>\n<meta property=\"og:site_name\" content=\"Infoblox Blog\" \/>\n<meta property=\"article:published_time\" content=\"2020-09-21T21:54:09+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.infoblox.com\/blog\/wp-content\/uploads\/sase-blog.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"824\" \/>\n\t<meta property=\"og:image:height\" content=\"583\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Ryan Bolger\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Ryan Bolger\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.infoblox.com\\\/blog\\\/community\\\/hacking-infoblox-discovery-for-fun-and-profit-its-just-another-csv\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.infoblox.com\\\/blog\\\/community\\\/hacking-infoblox-discovery-for-fun-and-profit-its-just-another-csv\\\/\"},\"author\":{\"name\":\"Ryan Bolger\",\"@id\":\"https:\\\/\\\/www.infoblox.com\\\/blog\\\/#\\\/schema\\\/person\\\/e0e331ad1b2aea882c12572e8aaf5543\"},\"headline\":\"Hacking Infoblox Discovery for Fun and Profit, It&#8217;s Just Another CSV\",\"datePublished\":\"2020-09-21T21:54:09+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.infoblox.com\\\/blog\\\/community\\\/hacking-infoblox-discovery-for-fun-and-profit-its-just-another-csv\\\/\"},\"wordCount\":1336,\"publisher\":{\"@id\":\"https:\\\/\\\/www.infoblox.com\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.infoblox.com\\\/blog\\\/community\\\/hacking-infoblox-discovery-for-fun-and-profit-its-just-another-csv\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.infoblox.com\\\/blog\\\/wp-content\\\/uploads\\\/sase-blog.jpg\",\"keywords\":[\"NetMRI\",\"NIOS\"],\"articleSection\":[\"Community\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.infoblox.com\\\/blog\\\/community\\\/hacking-infoblox-discovery-for-fun-and-profit-its-just-another-csv\\\/\",\"url\":\"https:\\\/\\\/www.infoblox.com\\\/blog\\\/community\\\/hacking-infoblox-discovery-for-fun-and-profit-its-just-another-csv\\\/\",\"name\":\"Hacking Infoblox Discovery for Fun and Profit, It's Just Another CSV\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.infoblox.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.infoblox.com\\\/blog\\\/community\\\/hacking-infoblox-discovery-for-fun-and-profit-its-just-another-csv\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.infoblox.com\\\/blog\\\/community\\\/hacking-infoblox-discovery-for-fun-and-profit-its-just-another-csv\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.infoblox.com\\\/blog\\\/wp-content\\\/uploads\\\/sase-blog.jpg\",\"datePublished\":\"2020-09-21T21:54:09+00:00\",\"description\":\"An IPAM solution is not very useful unless it accurately reflects the state of your network. The discovery features in NIOS have always been one of the great benefits of having Infoblox DDI.\u00a0Network Insight\u00a0and\u00a0NetMRI\u00a0focus on discovery of network gear and what is connected to it. The\u00a0vDiscovery\u00a0feature adds the ability to discover virtual infrastructure in both public and private cloud environments. All of these working together can give you a super accurate picture of what exists on your network\u2026if all your gear is supported.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.infoblox.com\\\/blog\\\/community\\\/hacking-infoblox-discovery-for-fun-and-profit-its-just-another-csv\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.infoblox.com\\\/blog\\\/community\\\/hacking-infoblox-discovery-for-fun-and-profit-its-just-another-csv\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.infoblox.com\\\/blog\\\/community\\\/hacking-infoblox-discovery-for-fun-and-profit-its-just-another-csv\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.infoblox.com\\\/blog\\\/wp-content\\\/uploads\\\/sase-blog.jpg\",\"contentUrl\":\"https:\\\/\\\/www.infoblox.com\\\/blog\\\/wp-content\\\/uploads\\\/sase-blog.jpg\",\"width\":824,\"height\":583,\"caption\":\"Projecting The Future\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.infoblox.com\\\/blog\\\/community\\\/hacking-infoblox-discovery-for-fun-and-profit-its-just-another-csv\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.infoblox.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Community\",\"item\":\"https:\\\/\\\/www.infoblox.com\\\/blog\\\/category\\\/community\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Hacking Infoblox Discovery for Fun and Profit, It&#8217;s Just Another CSV\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.infoblox.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.infoblox.com\\\/blog\\\/\",\"name\":\"infoblox.com\\\/blog\\\/\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.infoblox.com\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.infoblox.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.infoblox.com\\\/blog\\\/#organization\",\"name\":\"Infoblox\",\"url\":\"https:\\\/\\\/www.infoblox.com\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.infoblox.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.infoblox.com\\\/blog\\\/wp-content\\\/uploads\\\/infoblox-logo-2.svg\",\"contentUrl\":\"https:\\\/\\\/www.infoblox.com\\\/blog\\\/wp-content\\\/uploads\\\/infoblox-logo-2.svg\",\"width\":137,\"height\":30,\"caption\":\"Infoblox\"},\"image\":{\"@id\":\"https:\\\/\\\/www.infoblox.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.infoblox.com\\\/blog\\\/#\\\/schema\\\/person\\\/e0e331ad1b2aea882c12572e8aaf5543\",\"name\":\"Ryan Bolger\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/blogs.infoblox.com\\\/wp-content\\\/uploads\\\/avatar_user_341_1600712626-96x96.jpg\",\"url\":\"https:\\\/\\\/blogs.infoblox.com\\\/wp-content\\\/uploads\\\/avatar_user_341_1600712626-96x96.jpg\",\"contentUrl\":\"https:\\\/\\\/blogs.infoblox.com\\\/wp-content\\\/uploads\\\/avatar_user_341_1600712626-96x96.jpg\",\"caption\":\"Ryan Bolger\"},\"url\":\"https:\\\/\\\/www.infoblox.com\\\/blog\\\/author\\\/ryan-bolger\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Hacking Infoblox Discovery for Fun and Profit, It's Just Another CSV","description":"An IPAM solution is not very useful unless it accurately reflects the state of your network. The discovery features in NIOS have always been one of the great benefits of having Infoblox DDI.\u00a0Network Insight\u00a0and\u00a0NetMRI\u00a0focus on discovery of network gear and what is connected to it. The\u00a0vDiscovery\u00a0feature adds the ability to discover virtual infrastructure in both public and private cloud environments. All of these working together can give you a super accurate picture of what exists on your network\u2026if all your gear is supported.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.infoblox.com\/blog\/community\/hacking-infoblox-discovery-for-fun-and-profit-its-just-another-csv\/","og_locale":"en_US","og_type":"article","og_title":"Hacking Infoblox Discovery for Fun and Profit, It's Just Another CSV","og_description":"An IPAM solution is not very useful unless it accurately reflects the state of your network. The discovery features in NIOS have always been one of the great benefits of having Infoblox DDI.\u00a0Network Insight\u00a0and\u00a0NetMRI\u00a0focus on discovery of network gear and what is connected to it. The\u00a0vDiscovery\u00a0feature adds the ability to discover virtual infrastructure in both public and private cloud environments. All of these working together can give you a super accurate picture of what exists on your network\u2026if all your gear is supported.","og_url":"https:\/\/www.infoblox.com\/blog\/community\/hacking-infoblox-discovery-for-fun-and-profit-its-just-another-csv\/","og_site_name":"Infoblox Blog","article_published_time":"2020-09-21T21:54:09+00:00","og_image":[{"width":824,"height":583,"url":"https:\/\/www.infoblox.com\/blog\/wp-content\/uploads\/sase-blog.jpg","type":"image\/jpeg"}],"author":"Ryan Bolger","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Ryan Bolger","Est. reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.infoblox.com\/blog\/community\/hacking-infoblox-discovery-for-fun-and-profit-its-just-another-csv\/#article","isPartOf":{"@id":"https:\/\/www.infoblox.com\/blog\/community\/hacking-infoblox-discovery-for-fun-and-profit-its-just-another-csv\/"},"author":{"name":"Ryan Bolger","@id":"https:\/\/www.infoblox.com\/blog\/#\/schema\/person\/e0e331ad1b2aea882c12572e8aaf5543"},"headline":"Hacking Infoblox Discovery for Fun and Profit, It&#8217;s Just Another CSV","datePublished":"2020-09-21T21:54:09+00:00","mainEntityOfPage":{"@id":"https:\/\/www.infoblox.com\/blog\/community\/hacking-infoblox-discovery-for-fun-and-profit-its-just-another-csv\/"},"wordCount":1336,"publisher":{"@id":"https:\/\/www.infoblox.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.infoblox.com\/blog\/community\/hacking-infoblox-discovery-for-fun-and-profit-its-just-another-csv\/#primaryimage"},"thumbnailUrl":"https:\/\/www.infoblox.com\/blog\/wp-content\/uploads\/sase-blog.jpg","keywords":["NetMRI","NIOS"],"articleSection":["Community"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.infoblox.com\/blog\/community\/hacking-infoblox-discovery-for-fun-and-profit-its-just-another-csv\/","url":"https:\/\/www.infoblox.com\/blog\/community\/hacking-infoblox-discovery-for-fun-and-profit-its-just-another-csv\/","name":"Hacking Infoblox Discovery for Fun and Profit, It's Just Another CSV","isPartOf":{"@id":"https:\/\/www.infoblox.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.infoblox.com\/blog\/community\/hacking-infoblox-discovery-for-fun-and-profit-its-just-another-csv\/#primaryimage"},"image":{"@id":"https:\/\/www.infoblox.com\/blog\/community\/hacking-infoblox-discovery-for-fun-and-profit-its-just-another-csv\/#primaryimage"},"thumbnailUrl":"https:\/\/www.infoblox.com\/blog\/wp-content\/uploads\/sase-blog.jpg","datePublished":"2020-09-21T21:54:09+00:00","description":"An IPAM solution is not very useful unless it accurately reflects the state of your network. The discovery features in NIOS have always been one of the great benefits of having Infoblox DDI.\u00a0Network Insight\u00a0and\u00a0NetMRI\u00a0focus on discovery of network gear and what is connected to it. The\u00a0vDiscovery\u00a0feature adds the ability to discover virtual infrastructure in both public and private cloud environments. All of these working together can give you a super accurate picture of what exists on your network\u2026if all your gear is supported.","breadcrumb":{"@id":"https:\/\/www.infoblox.com\/blog\/community\/hacking-infoblox-discovery-for-fun-and-profit-its-just-another-csv\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.infoblox.com\/blog\/community\/hacking-infoblox-discovery-for-fun-and-profit-its-just-another-csv\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.infoblox.com\/blog\/community\/hacking-infoblox-discovery-for-fun-and-profit-its-just-another-csv\/#primaryimage","url":"https:\/\/www.infoblox.com\/blog\/wp-content\/uploads\/sase-blog.jpg","contentUrl":"https:\/\/www.infoblox.com\/blog\/wp-content\/uploads\/sase-blog.jpg","width":824,"height":583,"caption":"Projecting The Future"},{"@type":"BreadcrumbList","@id":"https:\/\/www.infoblox.com\/blog\/community\/hacking-infoblox-discovery-for-fun-and-profit-its-just-another-csv\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.infoblox.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Community","item":"https:\/\/www.infoblox.com\/blog\/category\/community\/"},{"@type":"ListItem","position":3,"name":"Hacking Infoblox Discovery for Fun and Profit, It&#8217;s Just Another CSV"}]},{"@type":"WebSite","@id":"https:\/\/www.infoblox.com\/blog\/#website","url":"https:\/\/www.infoblox.com\/blog\/","name":"infoblox.com\/blog\/","description":"","publisher":{"@id":"https:\/\/www.infoblox.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.infoblox.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.infoblox.com\/blog\/#organization","name":"Infoblox","url":"https:\/\/www.infoblox.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.infoblox.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.infoblox.com\/blog\/wp-content\/uploads\/infoblox-logo-2.svg","contentUrl":"https:\/\/www.infoblox.com\/blog\/wp-content\/uploads\/infoblox-logo-2.svg","width":137,"height":30,"caption":"Infoblox"},"image":{"@id":"https:\/\/www.infoblox.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.infoblox.com\/blog\/#\/schema\/person\/e0e331ad1b2aea882c12572e8aaf5543","name":"Ryan Bolger","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/blogs.infoblox.com\/wp-content\/uploads\/avatar_user_341_1600712626-96x96.jpg","url":"https:\/\/blogs.infoblox.com\/wp-content\/uploads\/avatar_user_341_1600712626-96x96.jpg","contentUrl":"https:\/\/blogs.infoblox.com\/wp-content\/uploads\/avatar_user_341_1600712626-96x96.jpg","caption":"Ryan Bolger"},"url":"https:\/\/www.infoblox.com\/blog\/author\/ryan-bolger\/"}]}},"_links":{"self":[{"href":"https:\/\/www.infoblox.com\/blog\/wp-json\/wp\/v2\/posts\/5566","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.infoblox.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.infoblox.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.infoblox.com\/blog\/wp-json\/wp\/v2\/users\/341"}],"replies":[{"embeddable":true,"href":"https:\/\/www.infoblox.com\/blog\/wp-json\/wp\/v2\/comments?post=5566"}],"version-history":[{"count":1,"href":"https:\/\/www.infoblox.com\/blog\/wp-json\/wp\/v2\/posts\/5566\/revisions"}],"predecessor-version":[{"id":5573,"href":"https:\/\/www.infoblox.com\/blog\/wp-json\/wp\/v2\/posts\/5566\/revisions\/5573"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.infoblox.com\/blog\/wp-json\/wp\/v2\/media\/4249"}],"wp:attachment":[{"href":"https:\/\/www.infoblox.com\/blog\/wp-json\/wp\/v2\/media?parent=5566"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.infoblox.com\/blog\/wp-json\/wp\/v2\/categories?post=5566"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.infoblox.com\/blog\/wp-json\/wp\/v2\/tags?post=5566"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}