Added Solaris support in Gnucomo report scripts.
authorArjen Baart <arjen@andromeda.nl>
Tue, 7 Feb 2012 14:25:37 +0000 (15:25 +0100)
committerArjen Baart <arjen@andromeda.nl>
Tue, 7 Feb 2012 14:25:37 +0000 (15:25 +0100)
scripts/gnucomo_hardware [new file with mode: 0755]
scripts/gnucomo_report
scripts/systemload

diff --git a/scripts/gnucomo_hardware b/scripts/gnucomo_hardware
new file mode 100755 (executable)
index 0000000..2ec1492
--- /dev/null
@@ -0,0 +1,168 @@
+#!/bin/sh
+#
+# Gnucomo hardware reporting script
+#
+# Create a parameter report with 4 values:
+
+
+### FUNCTIONS ####
+HP_PROLIANT()
+#Works on G5, G6, G7
+{
+   DMIBIOSVER=`dmidecode -s bios-version`
+   DMIMAN=`dmidecode -s system-manufacturer`
+   DMIPROD=`dmidecode -s system-product-name`
+   DMISER=`dmidecode -s system-serial-number`
+   USPREL=`cat /etc/issue | grep USP | awk '{print $1 " " $2}'`
+   USPKERN=`uname -r`
+
+   echo "      <gcmt:parameter name='System_info'>"
+   echo "         <gcmt:description>System information</gcmt:description>"
+   echo "         <gcmt:property name='system-manufacturer'>$DMIMAN</gcmt:property>"
+   echo "         <gcmt:property name='system-product-name'>$DMIPROD</gcmt:property>"
+   echo "         <gcmt:property name='system-serial-number'>$DMISER</gcmt:property>"
+   echo "         <gcmt:property name='bios-version'>$DMIBIOSVER</gcmt:property>"
+   echo "         <gcmt:property name='kernel'>$USPKERN</gcmt:property>"
+   echo "         <gcmt:property name='usp-release'>$USPREL</gcmt:property>"
+}
+
+#
+#  The default Linux way without assuming specific hardware.
+#
+LINUX()
+{
+   DMIBIOSVER=`dmidecode -s bios-version`
+   DMIMAN=`dmidecode -s system-manufacturer`
+   DMIPROD=`dmidecode -s system-product-name`
+   DMISER=`dmidecode -s system-serial-number`
+   USPREL=`cat /etc/issue | head -1`
+   USPKERN=`uname -r`
+
+   echo "      <gcmt:parameter name='System_info'>"
+   echo "         <gcmt:description>System information</gcmt:description>"
+   echo "         <gcmt:property name='system-manufacturer'>$DMIMAN</gcmt:property>"
+   echo "         <gcmt:property name='system-product-name'>$DMIPROD</gcmt:property>"
+   echo "         <gcmt:property name='system-serial-number'>$DMISER</gcmt:property>"
+   echo "         <gcmt:property name='bios-version'>$DMIBIOSVER</gcmt:property>"
+   echo "         <gcmt:property name='kernel'>$USPKERN</gcmt:property>"
+   echo "         <gcmt:property name='usp-release'>$USPREL</gcmt:property>"
+}
+
+
+SUN_SPARC_ENTERPRISE_T5120()
+{
+   DMIBIOSVER=`prtpicl -c chassis -v | grep FW-version | awk '{ for (i=2; i<=NF; i++) printf("%s ",$i)}'`
+   DMIMAN=`prtpicl -c chassis -v | grep :MfgName | awk '{ for (i=2; i<=NF; i++) printf("%s ",$i)}'`
+   DMIPROD=`prtpicl -c chassis -v | grep :Description | awk '{ for (i=2; i<=NF; i++) printf("%s ",$i)}'`
+   DMISER=`prtpicl -c chassis -v | grep :SerialNumber | awk '{ for (i=2; i<=NF; i++) printf("%s ",$i)}'`
+   USPREL=`uname -sr`
+   USPKERN=`uname -v`
+
+   echo "      <gcmt:parameter name='System_info'>"
+   echo "         <gcmt:description>System information</gcmt:description>"
+   echo "         <gcmt:property name='system-manufacturer'>$DMIMAN</gcmt:property>"
+   echo "         <gcmt:property name='system-product-name'>$DMIPROD</gcmt:property>"
+   echo "         <gcmt:property name='system-serial-number'>$DMISER</gcmt:property>"
+   echo "         <gcmt:property name='bios-version'>$DMIBIOSVER</gcmt:property>"
+   echo "         <gcmt:property name='kernel'>$USPKERN</gcmt:property>"
+   echo "         <gcmt:property name='usp-release'>$USPREL</gcmt:property>"
+}
+
+SUN_SPARC_ENTERPRISE_T5220()
+{
+   DMIBIOSVER=`prtpicl -c chassis -v | grep FW-version | awk '{ for (i=2; i<=NF; i++) printf("%s ",$i)}'`
+   DMIMAN=`prtpicl -c chassis -v | grep :MfgName | awk '{ for (i=2; i<=NF; i++) printf("%s ",$i)}'`
+   DMIPROD=`prtpicl -c chassis -v | grep :ModelName | awk '{ for (i=2; i<=NF; i++) printf("%s ",$i)}'`
+   DMISER=`prtpicl -c chassis -v | grep :SerialNumber | awk '{ for (i=2; i<=NF; i++) printf("%s ",$i)}'`
+   USPREL=`uname -sr`
+   USPKERN=`uname -v`
+
+   echo "      <gcmt:parameter name='System_info'>"
+   echo "         <gcmt:description>System information</gcmt:description>"
+   echo "         <gcmt:property name='system-manufacturer'>$DMIMAN</gcmt:property>"
+   echo "         <gcmt:property name='system-product-name'>$DMIPROD</gcmt:property>"
+   echo "         <gcmt:property name='system-serial-number'>$DMISER</gcmt:property>"
+   echo "         <gcmt:property name='bios-version'>$DMIBIOSVER</gcmt:property>"
+   echo "         <gcmt:property name='kernel'>$USPKERN</gcmt:property>"
+   echo "         <gcmt:property name='usp-release'>$USPREL</gcmt:property>"
+}
+
+SUN_FIRE_V()
+{
+   DMIBIOSVER="N/A"
+   DMIMAN="Sun Microsystems, Inc. "
+   DMIPROD=`uname -i | cut -d"," -f2`
+   DMISER=`prtpicl -c chassis-serial-number -v | grep SerialNumber | awk '{print $2}'`
+   USPREL=`uname -sr`
+   USPKERN=`uname -v`
+
+   echo "      <gcmt:parameter name='System_info'>"
+   echo "         <gcmt:description>System information</gcmt:description>"
+   echo "         <gcmt:property name='system-manufacturer'>$DMIMAN</gcmt:property>"
+   echo "         <gcmt:property name='system-product-name'>$DMIPROD</gcmt:property>"
+   echo "         <gcmt:property name='system-serial-number'>$DMISER</gcmt:property>"
+   echo "         <gcmt:property name='bios-version'>$DMIBIOSVER</gcmt:property>"
+   echo "         <gcmt:property name='kernel'>$USPKERN</gcmt:property>"
+   echo "         <gcmt:property name='usp-release'>$USPREL</gcmt:property>"
+}
+
+PATH=$PATH:/usr/sbin
+
+HOST=`hostname`
+TIME=`date`
+OS=`uname`
+
+echo "<?xml version='1.0'?>"
+echo "<gcmt:message xmlns:gcmt='http://gnucomo.org/transport/'>"
+echo "  <gcmt:header>"
+echo "      <gcmt:messagetype>XML</gcmt:messagetype>"
+echo "      <gcmt:hostname>$HOST</gcmt:hostname>"
+echo "      <gcmt:time>$TIME</gcmt:time>"
+echo "   </gcmt:header>"
+echo "   <gcmt:data>"
+
+echo "   <gcmt:parameters gcmt:class='hardware'>"
+
+# insert correct system info here:
+
+case $OS in
+   "Linux")
+      #starting linux detection procedure
+      PROD=`dmidecode -s system-product-name`
+      case $PROD in
+         "ProLiant DL380"*)
+            HP_PROLIANT
+            ;;
+         "hp workstation xw8200")
+            HP_PROLIANT
+            ;;
+         *)
+            LINUX
+            ;;
+      esac
+      ;;
+   "SunOS")
+      #starting sun detection procedure
+      PROD=`uname -i`
+      case $PROD in
+         "SUNW,SPARC-Enterprise-T5220")
+            SUN_SPARC_ENTERPRISE_T5220
+            ;;
+         "SUNW,SPARC-Enterprise-T5120")
+            SUN_SPARC_ENTERPRISE_T5120
+            ;;
+         "SUNW,Sun-Fire-V245")
+            SUN_FIRE_V
+            ;;
+      esac
+      ;;
+esac
+
+
+
+echo "      </gcmt:parameter>"
+
+echo "   </gcmt:parameters>"
+echo "  </gcmt:data>"
+echo "</gcmt:message>"
+
index 3dcf2cc..bfc1ee0 100755 (executable)
@@ -7,26 +7,40 @@
 
 PATH=$PATH:/usr/local/bin
 GNUCOMO_ADDRESS=gnucomo@`dnsdomainname`
+OS=`uname`
 
-if PACKAGER=`which rpm`
-then
-   PACKAGER='rpm -qa'
-else
-   if PACKAGER=`which dpkg`
+if test $OS = "Linux"; then
+
+   if PACKAGER=`which rpm`
+   then
+      PACKAGER='rpm -qa'
+   elif PACKAGER=`which dpkg`
    then
       PACKAGER='package-debian'
    fi
-fi
 
-if [ "x$PACKAGER" = x ]
-then
-   echo "Packages not available"
+   if [ "x$PACKAGER" == x ]
+   then
+      echo "Packages not available"
+   fi
+
+   $PACKAGER | mail -s 'Gnucomo package report' $GNUCOMO_ADDRESS
+   sleep 10
+   df -lPk -x tmpfs | mail -s 'Gnucomo filesystem report' $GNUCOMO_ADDRESS
+   sleep 10
+   df -lPi -x tmpfs | mail -s 'Gnucomo filesystem report' $GNUCOMO_ADDRESS
+
+elif test $OS = "SunOS"; then
+
+   PACKAGER='package-solaris'
+
+   $PACKAGER | mail -s 'Gnucomo package report' $GNUCOMO_ADDRESS
+   sleep 10
+   df -lk -F ufs | mail -s 'Gnucomo filesystem report' $GNUCOMO_ADDRESS
+
 fi
 
-$PACKAGER | mail -s 'Gnucomo package report' $GNUCOMO_ADDRESS
-sleep 10
-df -lPk -x tmpfs | mail -s 'Gnucomo filesystem report' $GNUCOMO_ADDRESS
-sleep 10
-df -lPi -x tmpfs | mail -s 'Gnucomo filesystem report' $GNUCOMO_ADDRESS
 sleep 10
 systemload | mail -s 'Gnucomo load report' $GNUCOMO_ADDRESS
+sleep 10
+gnucomo_hardware | mail -s 'Gnuicomo hardware report' $GNUCOMO_ADDRESS
index 8363466..dba2ca4 100755 (executable)
@@ -7,7 +7,13 @@
 # 
 
 
-HOST=`hostname --fqdn`
+OS=`uname`
+if test $OS = 'Linux' ; then
+   HOST=`hostname --fqdn`
+elif test $OS = 'SunOS' ; then
+   HOST=`hostname`
+fi
+
 TIME=`date`
 
 echo "<?xml version='1.0'?>"
@@ -21,8 +27,14 @@ echo "   <gcmt:data>"
 
 echo "   <gcmt:parameters gcmt:class='systemload'>"
 
-PROCESSES=`ps ax|wc -l|awk ' {print $1}'`
-LOADAV=`  uptime|awk ' { print $11 }' | tr -d ,`
+PROCESSES=`ps -e|wc -l|awk ' {print $1}'`
+if test $OS = 'Linux' ; then
+   LOADAV=`  uptime|awk ' { print $11 }' | tr -d ,`
+elif test $OS = 'SunOS' ; then
+   LC_NUMERIC=POSIX
+   export LC_NUMERIC
+   LOADAV=`  uptime|awk ' { print $11 }' | tr -d ,`
+fi
 
 echo "<gcmt:parameter name='Load'>"
 echo "   <gcmt:description>System processing load</gcmt:description>"