#!/bin/ksh # # $Log: get_sysinfo_convert_html,v $ # Revision 1.6 2008/10/17 13:42:28 mbaker # added Date field # # Revision 1.5 2008/09/24 18:22:40 mbaker # added CD-ROM DVD # # Revision 1.4 2008/09/23 01:59:35 mbaker # changed prints to ECHO # # Revision 1.3 2008/08/29 15:21:41 mbaker # added company argument for HTML header # # Revision 1.2 2008/08/16 17:55:28 mbaker # added RAIDL # # Revision 1.1 2008/06/26 02:08:55 mbaker # Initial revision # # ############################################################################### #DOCBEGIN # # Script to convert colon delimited get_sysinfo file into a html table. # # The script combines individual config file into one, by doing # cat $SRCDIR/*.sysinfo.db > $SRCFILE # # It expects the input files from all systems to be in the format of: # $HOSTNAME.sysinfo.db (which is the default output of get_sysinfo). # # # Matt Baker - mbaker@computeranddata.com # Latest copy available at www.computeranddata.com/scripts # Version 4.3 08/29/2008 # #DOCEND ############################################################################### TMPDIR=/tmp TMPFILE=$TMPDIR/html-format.$$ COMPANY="" DESTDIR=/www DESTFILE=$DESTDIR/company-sysinfo.html SRCDIR=/nfsserver/data/get_sysinfo SRCFILE=$SRCDIR/sysinfo.db HEADERLINES=10 RULERLINES=5 HEADERONLY=0 VERBOSE=0 DEBUG=0 STDOUT=0 DATE="$(date)" HEADER=" Item Hostname Hostid Serial Number OS Type OS Version Hardware Release Kernel Patch Arch Platform Model Kernel 32/64 Bit System Firmware CPU Qty CPU Speed Memory Size Page Size Swap Size DNS Domainname Virtual:Zones,VIO VNAMEs:VIPs Sun DOMAINs,LPARs,NPARs Diskgroups ZFS Pools Total Disk SMALL 2GB 4GB 8GB 18GB 36GB 73GB 100GB 150GB 200GB 300GB 500GB gte 1TB EMC SAN EMC BCVs IBM SAN HDS SAN CD-ROM/DVD HBA HBA Type HBA Driver HBA Firmware HBA Fcode NET NIC:100Mb NIC:Gb Boards GBIC SOC SCSI FDDI HSI VIDEO SSA A5000 A5000 ARRAY NAMES Netra D130 RAIDL Java Perl VXVM VXFS VCS Netbackup TSM PowerPath ECC ESN Manager Volume Logix Fibre Zone Patrol Scheduler Forte Apache Netscape Websphere Weblogic Broadvision SQL Backtrack TripWire SSH Usage Location Busines Unit Server Purpose Lease Number Previous Hostnames Page if down Maintenance Level Data Capture Date " OSTYPE=$(uname 2> /dev/null) if [[ $OSTYPE = SunOS ]] then if [[ -f /usr/ucb/echo ]] then ECHO="/usr/ucb/echo" else #use ksh print ECHO="print" #ECHO="/usr/bin/echo" fi elif [[ $OSTYPE = AIX ]] then #use ksh print ECHO="print" #ECHO="/usr/bin/echo" elif [[ $OSTYPE = HP-UX ]] then #use ksh print ECHO="print" #ECHO="/usr/bin/echo" elif [[ $OSTYPE = Linux ]] then ECHO="/bin/echo" elif [[ -n $(echo $OSTYPE | grep ^CYGWIN) ]] then ECHO="/usr/bin/echo" fi ########### # PARSING: read in options & arguments ########### while (( $# )) do case $1 in -sd) shift if (( $# )) then SRCDIR=$1 # # set file here so it knows new path, can be overriden later # SRCFILE=$SRCDIR/sysinfo.db shift if [[ ! -d $SRCDIR ]] then $ECHO "ERROR:4: srcdir $SRCDIR doesn't exist" exit 4 fi else $ECHO "ERROR:1: srcdir (-sd) needs an argument" exit 1 fi ;; -sf) shift if (( $# )) then SRCFILE=$SRCDIR/$1 shift touch $SRCFILE 2> /dev/null if [[ ! -f $SRCFILE ]] then $ECHO "ERROR:5: srcfile $SRCFILE cannot create" exit 5 fi else $ECHO "ERROR:1: srcfile (-sf) needs an argument" exit 1 fi ;; -dd) shift if (( $# )) then DESTDIR=$1 # # set file here so it knows new path, can be overriden later # DESTFILE=$DESTDIR/company-sysinfo.html shift if [[ ! -d $DESTDIR ]] then $ECHO "ERROR:4: destdir $DESTDIR doesn't exist" exit 4 fi else $ECHO "ERROR:1: destdir (-dd) needs an argument" exit 1 fi ;; -df) shift if (( $# )) then DESTFILE=$DESTDIR/$1 shift touch $DESTFILE 2> /dev/null if [[ ! -f $DESTFILE ]] then $ECHO "ERROR:5: destfile $DESTFILE cannot create" exit 5 fi else $ECHO "ERROR:1: destfile (-df) needs an argument" exit 1 fi ;; -c) shift COMPANY="$1" shift ;; -stdout) STDOUT=1 shift ;; -header*) HEADERONLY=1 shift ;; -debug) DEBUG=1 shift ;; -v) VERBOSE=1 shift ;; -info | -doc) awk '/DOCBEGIN/, /DOCEND/' $0 \ | sed -e 's/^#//' \ | sed -e '/DOCBEGIN/d' \ | sed -e '/DOCEND/d' \ | more exit 0 ;; -h|*) if [[ $1 != -h ]] then $ECHO "\n OPTION: $1 is invalid.\n" else $ECHO "" fi ############################################################################## cat << EOF Usage: $0: Usage: $0: [-debug] [-v] [-headeronly] [-stdout] Usage: $0: [-c companyname] [-sd SRCDIR ] [-sf SRCFILENAME ] [-dd DESTDIR ] [-df DESTFILENAME ] Usage: $0: -info | -doc Usage: $0: -h no args: defaults to combined files in HTML output -headeronly: print out HEADER ONLY -stdout: print output to stdout (still saves to DESTFILE) -debug: debug mode, does a 'set -x' -o: lists running oracle instances/SIDs (based upon a unique standard) -v: verbose mode -info|doc: print out header of program (document) -h: help - command synopsis (this listing) EOF ############################################################################## exit 1 ;; esac done if (( DEBUG )) then set -x fi if [[ -n $COMPANY ]] then COMPANY=" for $COMPANY" fi # # Turn HEADER into colon delimited output, output it, then exit # if (( HEADERONLY )) then $ECHO $HEADER \ | sed -e 's///' \ | sed -e 's/<\/th>$//' \ | sed -e 's/> ://g' \ | sed -e 's/<\/th>//g' exit 0 fi if (( VERBOSE )) then $ECHO "starting conversion" fi # # grab each individual config file and combine into one # cat $SRCDIR/*.sysinfo.db > $SRCFILE # # do header # cat << EOF > $TMPFILE

Server Configs $COMPANY

Last Modified on: $DATE

$HEADER EOF # # add html to each line for table formatting # CNT=1 if (( VERBOSE )) then $ECHO -n "Doing server/line number..." fi while read -r line do if (( VERBOSE )) then $ECHO -n "${CNT}..." fi # translate colons to tables line=$($ECHO "$line" | sed 's@:@") $ECHO "" >> $TMPFILE $ECHO "$line" >> $TMPFILE $ECHO "" >> $TMPFILE # # repeat the "rule" (double lines) every X lines # if (( $CNT % $RULERLINES == 0 )) then $ECHO "" >> $TMPFILE #$ECHO "" >> $TMPFILE #$ECHO "" >> $TMPFILE fi # # repeat the header every X lines # if (( $CNT % $HEADERLINES == 0 )) then cat <<- EOF >> $TMPFILE $HEADER EOF fi let CNT=$CNT+1 done < $SRCFILE # # do footer # cat << EOF >> $TMPFILE
@g') # add table format for beginning and end of each line line=$($ECHO "${CNT}${line}
EOF cat << EOF >> $TMPFILE EOF if [[ ! -d $DESTDIR ]] then $ECHO "ERROR:4: destdir $DESTDIR doesn't exist" exit 4 fi mv $TMPFILE $DESTFILE # # print to STDOUT (if set), then output save filename regarless # if (( STDOUT )) then cat $DESTFILE else if (( VERBOSE )) then $ECHO "completed conversion" $ECHO "See outputfile $DESTFILE" fi fi