Howdy, I've whipped together a very simple module for extracting some SMBIOS variables to define additional classes, here's some example output:
--------------------------------------------------------------------- Plug-in `module:smbios' --------------------------------------------------------------------- Exec module [/var/cfengine/modules/module:smbios ] Activated classes: smbios_vendor_Dell_Computer_Corporation Activated classes: smbios_model_PowerEdge_1850 Activated classes: smbios_serial_HC98D91 Activated classes: smbios_cpu0_Intel_Xeon_CPU_3_00GHz Activated classes: smbios_cpu1_Intel_Xeon_CPU_3_00GHz Activated classes: smbios_total_mem_4294967296 <snip> Exec module [/var/cfengine/modules/module:smbios ] Activated classes: smbios_vendor_SiMech Activated classes: smbios_model_Q300 Activated classes: smbios_serial_SM19974 Activated classes: smbios_cpu0_Intel_Xeon_CPU_3_00GHz Activated classes: smbios_cpu1_Intel_Xeon_CPU_3_00GHz Activated classes: smbios_total_mem_4294967296 This script requires lshw (Linux only, dmidecode port welcomed) and xmlstarlet for parsing. Also, most "whitebox" servers have a default serial # of "1234567890" etc; in theory this is not the case with modern HP, Dell, etc. motherboards. I'd appreciate comments and suggestions, thanks. -- Matt Peterson
#!/bin/sh # $Id: module:smbios,v 1.1 2006/05/17 23:41:37 root Exp matt $ # Public domain. Matt Peterson <matt AT peterson D0T org> # This is a simple Cfengine module for generating some additional classes # based on SMBIOS data (serial #, model name, CPU's, etc); pre-reqs below: # lshw http://ezix.org/project/wiki/HardwareLiSter # xmlstarlet http://xmlstar.sourceforge.net/ # sh, bc, sed # Define some paths lshw="/usr/sbin/lshw" xmlstarlet="/usr/bin/xmlstarlet" if [ ! -x $lshw ]; then echo "Warning: lshw not found, exited `basename $0`" exit 0 fi if [ ! -x $xmlstarlet ]; then echo "Warning: xmlstarlet not found, exited `basename $0`" exit 0 fi lshw_xml_dump=`$lshw -xml` smbios_vendor=`echo $lshw_xml_dump | $xmlstarlet sel -t -v "/node[1]/vendor" -` smbios_vendor=`echo $smbios_vendor | sed 's/[ \t]/_/g'` smbios_model=`echo $lshw_xml_dump | $xmlstarlet sel -t -v "/node[1]/product" -` smbios_model=`echo $smbios_model | sed 's/[ \t]/_/g'` smbios_serial=`echo $lshw_xml_dump | $xmlstarlet sel -t -v "/node[1]/serial" -` smbios_cpu0=`echo $lshw_xml_dump | $xmlstarlet sel -t -v "//[EMAIL PROTECTED] = 'cpu:0']/product" - ` smbios_cpu0=`echo $smbios_cpu0 | sed -e 's/[\(R\)|\(TM\)]//g' -e 's/[ \t]/_/g' -e 's/\./_/'` smbios_cpu1=`echo $lshw_xml_dump | $xmlstarlet sel -t -v "//[EMAIL PROTECTED] = 'cpu:1']/product" - ` smbios_cpu1=`echo $smbios_cpu1 | sed -e 's/[\(R\)|\(TM\)]//g' -e 's/[ \t]/_/g' -e 's/\./_/'` # Expressed in bytes smbios_total_mem=`echo $lshw_xml_dump | $xmlstarlet sel -t -v "//[EMAIL PROTECTED] = 'bank:0']/size" -o "+0" -v "//[EMAIL PROTECTED] = 'bank:1']/size" -o "+0" -v "//[EMAIL PROTECTED] = 'bank:2']/size" -o "+0" -v "//[EMAIL PROTECTED] = 'bank:3']/size" -o "+0" -v "//[EMAIL PROTECTED] = 'bank:4']/size" -o "+0" -v "//[EMAIL PROTECTED] = 'bank:5']/size" -o "+0" -v "//[EMAIL PROTECTED] = 'bank:6']/size" -o "+0" -v "//[EMAIL PROTECTED] = 'bank:7']/size" -` smbios_total_mem=`echo $smbios_total_mem | bc` echo "+smbios_vendor_$smbios_vendor" echo "+smbios_model_$smbios_model" echo "+smbios_serial_$smbios_serial" echo "+smbios_cpu0_$smbios_cpu0" echo "+smbios_cpu1_$smbios_cpu1" echo "+smbios_total_mem_$smbios_total_mem"
_______________________________________________ Help-cfengine mailing list Help-cfengine@cfengine.org http://cfengine.org/mailman/listinfo/help-cfengine