I don't if you have already looked at that, but there are already some scripts using the informations in /proc to find the kind of hardware installed. There are several scripts using Perl, and that's not usable on floppy. This one uses only Bourne Shell. But the question is ? How do you want to use the information collected ? -- Thierry LARONDE, Centre de Ressources Informatiques, Archamps - France http://www.cri74.org PingOO, serveur de com sur distribution GNU/Linux: http://www.pingoo.org
#!/bin/sh ###################################################### # V.1.7 Dino Amato [EMAIL PROTECTED] # hardware inventory and detect script # # feel free to use, any changes please send to me # to include in another version # GNU GENERAL PUBLIC LICENSE # tested on RedHat, SuSE and Debian so far. ####################################################### verbose= # show usage usage() { echo "usage: `basename $0` [-h]" echo " `basename $0` [-c|--clear][-v|--verbose][-h|--help]" echo " -c | clear's screen before displaying" echo " -v | verbose output" exit 0 } # parse options while [ $# -gt 0 ] ; do { [ ${1} = "-v" ] || [ ${1} = "--verbose" ] && { verbose=y; shift; continue } [ ${1} = "-c" ] || [ ${1} = "--clear" ] && { clear; shift; continue } usage } done [ $# -gt 0 ] && usage ################### # CPU Section ################### case `uname -m` in alpha) proc=`grep "^cpus" /proc/cpuinfo | cut -d: -f2` proc=`expr $proc + 1` echo "Total Processors: $proc" egrep -i "cpu (model|revision)|cycle" /proc/cpuinfo ;; *) count=`egrep -c ^processor /proc/cpuinfo` type=`egrep "model name" /proc/cpuinfo | cut -d: -f2 | uniq` speed=`egrep "cpu MHz" /proc/cpuinfo | cut -d: -f2 | cut -d. -f1 | uniq` cach=`egrep "cache size" /proc/cpuinfo | cut -d: -f2 | uniq` # echo "Total CPU's: $count" echo "$type $speed MHZ " | awk '{print""$0;}' echo "Cache Size: $cach" | awk '{print" "$0;}' # echo "Total CPU's: $count" # echo "$type $speed " # echo "Cache Size: $cach" ;; esac ################### # Mem Section ################### mem=`ls -l /proc/kcore | awk '{print int($5 / 1024 / 1024)}'` echo "Main Memory Size: $mem MB" echo ################## # IDE HD Section ################## do_hdr=y for host in 0 1 ; do { for chan in a b c d ; do { [ -r /proc/ide/ide${host}/hd${chan}/model ] && { [ ${do_hdr} ] && { echo; do_hdr= } echo "Host: ide${host} Channel: hd${chan}" read vendor model </proc/ide/ide${host}/hd${chan}/model printf "Vendor:%8s Model: %s\n" ${vendor} "${model}" } } done } done echo ################## # SCSI HD Section ################## if [ -r /proc/scsi/scsi ]; then egrep -A 1 Host /proc/scsi/scsi | sed -e 's/^[ ]*//' fi ############# # KB Section ############# echo echo "Keyboard Detected:" `egrep -c keyboard /proc/ioports` ################ # PS/2 Section ################ if [ "`egrep "PS/2 Mouse" /proc/interrupts | awk '{print $4 " " $5 }'`" = "PS/2 Mouse" ]; then echo "PS/2 Mouse Detected" fi ###################### # Serial Port Section ###################### [ ${verbose} ] && [ `grep -c serial /proc/ioports` -gt 0 ] && echo echo "Serial Ports:" `egrep -c serial /proc/ioports` [ ${verbose} ] && [ -f /proc/tty/driver/serial ] && { grep -v unknown /proc/tty/driver/serial \ | grep uart | sed 's/^/ttyS/' } ################# # PCMICA Section ################# if [ -x /sbin/cardctl ]; then echo "PCMCIA:" /sbin/cardctl ident | awk '{ print " "$0; }' fi ######################### # show parallel hardware ######################### # show parallel hardware list_parport() { base= irq= dma= modes= dev=${1} while read type data ; do { [ ${type} = "base:" ] && { base="${data}"; continue } [ ${type} = "irq:" ] && { irq="${data}"; continue } [ ${type} = "dma:" ] && { dma="${data}"; continue } [ ${type} = "modes:" ] && { modes="${data}"; continue } } done echo ${dev}: io=${base} irq=${irq} dma=${dma} modes=${modes} } npar=0 [ -d /proc/parport ] && { for d in /proc/parport/[0-9]* ; do { [ -d ${d} ] && npar=`expr ${npar} + 1` } done } [ ${npar} -gt 0 ] && [ ${verbose} ] && echo echo Parallel Ports: ${npar} [ -d /proc/parport ] && [ ${verbose} ] && { for d in /proc/parport/[0-9]* ; do { [ -d ${d} ] || continue port=`basename ${d}` device=`cat ${d}/devices` list_parport ${device:-parport}${port} < ${d}/hardware [ -f ${d}/autoprobe ] && [ `wc -l < ${d}/autoprobe` -gt 0 ] && { cat ${d}/autoprobe | sed 's/^/ /' } } done } #echo "Parallel Ports:" # I am removign the parallel port detect due to many differnt # ways and OS versions. if someone has a good way that detects # on ALL kernel versions cool, lets add it. ########################## # Network Interface area ########################## /sbin/ifconfig | egrep -q "^eth[0-9]+[^:]" && { [ ${verbose} ] && echo echo "Ethernet Controllers:" `/sbin/ifconfig |\ awk '/^eth[0-9]+[^:]/ {print $1}'` [ ${verbose} ] && /sbin/ifconfig | egrep "^eth[0-9]+[^:]" } /sbin/ifconfig | egrep -q "^fddi[0-9]+[^:]" && { [ ${verbose} ] && echo echo "FDDI Controllers:" `/sbin/ifconfig |\ awk '/^fddi[0-9]+[^:]/ {print $1}'` [ ${verbose} ] && /sbin/ifconfig | egrep "^fddi[0-9]+[^:]" } ############################################################### # remove the '| uniq' if you want the script faster # in the next section. If you have OLD hardware you may need it # otherwise remove them ############################################################### echo if [ -r /proc/pci ]; then egrep -i 'interface|controller' /proc/pci | sed 's/^ *//' | uniq else echo "No Controller Detect, You Have Old Hardware" fi echo if [ $verbose ]; then egrep -i "bridge" /proc/pci | sed 's/^ *//' | uniq fi #################### # show USB devices #################### print_usb() { echo USB Device: ${devno} Driver: ${driver} echo " "${product:-"[unknown]"} [ ${verbose} ] && { [ "${manufacturer}" ] && echo " ${manufacturer}" [ "${vendor}" ] && echo " ${vendor}" } } list_usb_devs() { cdev=0 pending= while read type data ; do { [ ${type} = "T:" ] && { cdev=`expr $cdev + 1` [ ${pending} ] && print_usb manufacturer= product= vendor= driver= devno=`echo ${data} | sed -e 's/^.*Dev#=[^0-9]*//' -e 's/ .*$//'` pending=y continue } [ ${type} = "I:" ] && { driver=${data#*Driver=} continue } [ ${type} = "S:" ] && { echo ${data} | grep -q ^Product && { product=${data#Product=} } echo ${data} | grep -q ^Manufacturer && { manufacturer=${data#Manufacturer=} } continue } [ ${type} = "P:" ] && { echo ${data} | grep -q ^Vendor && { vendor=${data} } continue } } done [ ${pending} ] && print_usb } [ -d /proc/bus/usb ] && [ -f /proc/bus/usb/devices ] && { echo list_usb_devs < /proc/bus/usb/devices } #[ -d /proc/bus/usb ] && { # echo # list_usb_devs < /proc/bus/usb/devices #}