views:

423

answers:

2

Dear Stackoverflowers

I would like to develop a Network Inventory application that works on any operating system. Reports on every possible resource attacehd to a network. Reports all pertinent details of hardware and software. Thats (and i hate to use the phrase) my "End Game".

However I am running before i can crawl here. I have no experience of this type of development, e.g. discovering a computers hardware and software settings.

I've spent almost two weeks googling and come up short! :-(.

So I am turning to you to ask these questions:-

My first step is to find an existing open source project i can incorporate into my own code that extracts the fine grained details i am after, e.g. EVERYTHING there is to know about the hardaware and software on a single machine.

Does this project exist? or do i have to develop that first?

Have i got to write all this in C?

I am guessing getting this information about a computer is going to be easier than for printers, scanners, routers etc... e.g. everything else you would find attached to a network.

Once i have access to a single computers details i then need to investigate how i can traverse an entire newtork of printers, scanners, routers, load balancers, switches, firewalls, workstations, servers, storeage devices, laptops, monitors, the list goes on and on

One problem i have is i dont have a 1000 machine newtork to play on! Is there any such resource available on theinternet? (is that a silly question?)

Anywho, if you dont ask you wont find out!

One aspect iam really looking forward to finding out how to travers the entire network,

should i be using TCP/IP for this?

Whats a good site, blog, usergorup, book for TCP/IP development?

How do i go about getting through firewalls?

How many questions can i ask in one go? :-)

My previous question on this topic ended up with PYTHON being championed as the language/script to go with to develop this application in.

Having looked at a few PYTHON examples they all seemed to be related to WINDOWS networks and interrogating Windows Management Instrumentation (WMI). I had the feeling you cant rely on whats in WMI, and even if you can that s no good for UNIX netwrks.

Surely there exist common code for extracting hardware and software details from a computer? Why cant i find it on the internet?

Pease help?

Theres no prizes though :-(

Thanks in advance

I would like to appologise if i have broken forum rules or not tried hard enough on my own before asking for assistance.

I just would like to start moving forward with this as its one of the best projects i have been involved with.

I am inspired by the many differnt number of challenges involved and that if i manage to produce a useful application at the end of it it would hopefully be extremely helpful to many people.

That sit

Thanks in advance

DD

+2  A: 

Hi DD,

as a software vendor of a discovery solution, I can just say: Respect, that you want to start a new one :-). Just in case you are interested in what it could look like: http://www.jdisc.com

Now to some of our experience:

  1. Programming Language: I wouldn't write it in C. Use Java or .NET. Those languages have great advantages when it comes to tracking down errors or problems. For instance, in Java (and I guess also in .NET), you can see the stack trace when something is failing. For some pieces of code (e.g. WMI access), you might need to use C++ or C (e.g. access to native APIs from Microsoft). Use a native interface or a COM bridge from Java. In .NET, it should even be easier to access the Windows APIs).

  2. Devices: well, network printers, router, and switches are actually easier to discover. They usually expose their information via SNMP. SNMP is pretty easy to use and pretty robust. Getting information from Windows (or even Unix) systems is a bit trickier. Protocols can be blocked, misconfigured, messed up... We had cases, where WMI was simply hanging when requesting data from a remote device.

  3. Test Devices: Since we are also a smaller company, we also do not have 1000 different devices to test with. But, there are some things that might help:

a) For SNMP devices use a SNMP simulator. We use MIMIC 9.0 from Gambit Solutions and we are pretty happy with it. You can import SNMP walks from network devices and simulate the device as if it would be in your network. b) Secondly, use virtualization whenever possible. With VMware, you can install Windows, Linux, or even Solaris. We also use a project called GNS3 to emulate Cisco Routers, Firewalls or Juniper routers. c)You can test the rest of the devices only, if you have a customer that helps you with testing and implementing new devices.

This are just some ideas to start with. But I have to tell you, that it is not trivial and it takes a lot of time....

Hope that you got some ideas to start with...

A: 

I don't know that it's open source, but we use Spiceworks (http://www.spiceworks.com) here as an IT management platform. You may get some use out of exploring that.

Ian Jacobs