Version 3 (modified by 15 years ago) ( diff ) | ,
---|
James is working on a second generation inventory script.
Currently on: Gatherer
It's plan is to be simpler and less ambitious than it's predecessor, but still respect the sql table structure ("as much as possible.")
As I see it there should be 3 parts to this script:
- executer: runs either wget or apt-get install and copies the latest version of the other parts of the scripts then executes them
- gatherer: collects information using only operating system based facilities (dmesg, lsusb, lspci, ifconfig, /sys).
- Writer: checks the mysql repository for changes from the current state. If different changes them.
The sql structure is a bit of a bit mess, the major tables of interest are:
- motherboards - List of things that can be connected to, has its own id used to tie other tables to it
- devices - List of deviced "connected" to mother boards
- device_kinds - type identifier for connected devices (an attribute of a device).
- locations - Converts x,y coordinates to a single integer that maps directly to a mother board.
- inventories - records the start and stop time of the inventory pass.
A lot of the tables are full of unused colums. I guess we'll just ignore them for now. The basic crux of an update should be the following:
- examine our IP to determine our current location
- We gather information about the mother board:
- Disk Size (dmesg)
- Memory Size (dmesg)
- Gather information about attached devices:
- 2 wired Ethernet addresses (ifconfig, /sys)
- 2 wireless Ethernet addresses (ifconfig, /sys)
- any usb devices (lsusb, /sys)
- get the mother board id from the location table
- update mother board information if diffrent, and stamp with current inventory number
- update devices if diffrent and stamp with inventory number
- profit.
Gatherer: The disk size and memory size are a quick scan from dmesg. The disk size matches, but the memory size is a little off. It probably has to do with the way dmesg reports memory vs /sys reports memeory. It would be nice to find the /sys entry for consistency.
In /sys/devices/pci0000:00 are the sub directories correlated with the specific Ethernet hardware. In each directory that correlated to an Ethernet device there will be a symbolic link with the operating system name of the device. This will allow us to match up the pci address(name of the subdirectory of /sys/devices/pci0000:00) to the mac address (from ifconfig). lspci can tell us the associated pci address and a hardware identifier string.
lsusb on the otherhand offers a direct correlation to the device kind table, the ordered pair of numbers xxxx:yyyy directly correlated to the tables vendor and device ids. And the Bus xxx Device yyy number fits into the addres category of the device table.
9/29/09
I may have discovered the cause of the device / vendor discrepancy. Joe seems to be looking at /sys/class/net/devincename/device… perhaps this points to a different device id. I'll have to check it out.