views:

54

answers:

4

Dear stackoverflow

I hope this is the corrcet type of question for stackoverflow to consider

I would like to develop a "Hard Core" application that performs Network Inventory.

High level requirements are

Work on Windows and UNIX networks it has to be extremly performant it has to be 100% accuarate (massively) scalable and fun to write

The sort of details I am after is manufacturer and versions of all major workstation hardware components such as motherboard, network card, sound card, hard drives, optical drives, memory, BIOS details, operating system information etc.

I dont want to have to distribute a client on each workstation to collect the information although i will require automatic worksattion discovery

I would value your thoughts on the best development language to employ

I know there are products such as NEWT and stuff like nmap...

I would like to do this type of technical programming myself "from scratch"

Warm Regards

DD

A: 

You won't be able to get all of this information from sniffing or probing over the network. You won't be able to get memory, BIOS, sound card, and hard drive details this way.

You could interact with the computers, for example, using SMS or WMI on Windows to get this type of information.

If you are on a domain, you could employ some type of global start up script to run a program on both Windows and UNIX workstations.

We have a third-party program here at work that does this type of thing, but it's Windows only. It also collects information about installed software.

Write it in C or C++, since it doesn't require a UI, and you will be able to reuse some of the code between platforms, but a lot of the code is going to be platform dependent.

Marcus Adams
Thanks to everyone that has looked at this...The more i think of this project the more it interests me!Howveer after many GOOGLing sessions i have hit a Brick wall trying to find How to do it myself.Are there any stackoverflowers that can point me at how to get down to the nitty gritty of first1). Digging into the internals of one pc/workstation2). How to crawl all over a network3). perform an archealogical dig of a network inventory?I really fancy getting into low level tcp/ip stuff and working out how to crawl all round a networkany pointers would be gratefully receivedDD
Dick dastardly
A: 

Thansk for bothering to look at this

Thats what I was worried about, I didnt want to use startup scripts or have anything installed on each workstation.

I also need installed software info, basically I need to know everything there is to know about each workstation.

Pity it has come down to the third letter of the alphabet. I dont really fancy that.

I was thinking along the lines of some sort of "Crawler" that could be sent on its way to "visit" a workstation and discover info.

The platform dependancy kills me here as I have to visist over 500 differnt client sites to do this! all sorts of windows OS all sorts of UNIX some 32 other 64 bit.

I also need printers etc details.

Its a good puzzle as java would give me something that ran anywhere but not the platform info i need.

I need cava++ ! :-)

Dick dastardly
A: 

The relevant parts of your requirements are that it has to run on Windows and Unix, has to run very fast (is this a hard requirement?), and has to work well with other systems. That would seem to indicate C or C++. If high performance isn't as important (and I don't know what would need to be speedy about inventory management), a language like Perl or Python could do nicely. If you need to write some low-level stuff, you might get by with writing C modules and embedding them in Perl or Python.

I'm skipping the question of how much information you can get about a computer by asking it over a network. It may not be as much as you want.

David Thornley
DavidIt does have to be "Fast" as we support over 500 customer sitesso dont want to "hang about" on their premises clogging up there network with inventory requestsi hadnt thought of python, i'll look into thathopefully there are existing c libraries i can use, you wouldnt know of any off hand?I would like to have a GUI front end to display the information.is that possible with python scripts?Thanks very much once again for looking at this and taking the time to respond
Dick dastardly
@Dick dastardly: Network-based programs are often limited by network speed, and the program execution speed frequently makes little difference. In any case, it's often possible to write the time-consuming stuff in C. As far as libraries and such, yes, you can do a nice GUI in Python, but no, I don't know of specific C libraries.
David Thornley
A: 

I know that Spiceworks uses Ruby to do it's network management / inventory / trouble ticketing, etc. system. I had it up in my SOHO server-less network. It saw and worked with XP, Win7 Ultimate, my routers, cell phones, and Linux based network devices (NAS and print server).

BezantSoft