#!/bin/bash

#== User, Please modify variables Within this section ==========================
SERIAL="Replace with company serial number"
OUTPUTPATH="/root/"
#===============================================================================
SCRIPTVERSION="1.25"

HOSTNAME=`hostname --fqdn 2>/dev/null`
VERSION=`cat /proc/version 2>/dev/null`
DATE=`date 2>/dev/null`
OUTPUTFILE="$HOSTNAME.sysinfo.html"
PMODEL=`cat /proc/cpuinfo 2>/dev/null| grep vendor_id | awk -F\: '{print $2}'`
PNAME=`cat /proc/cpuinfo 2>/dev/null| grep model | awk -F\: '{print $2}'`
PSPEED=`cat /proc/cpuinfo 2>/dev/null| grep MHz | awk -F\: '{print $2}' | awk -F\. '{print $1}'`
RAM=`cat /proc/meminfo 2>/dev/null| grep MemTotal | awk -F\: '{print $2}' | awk -F\  '{print $1 " " $2}'`
SWAP=`cat /proc/meminfo 2>/dev/null| grep SwapTotal | awk -F\: '{print $2}' | awk -F\  '{print $1 " " $2}'`
INSTALLEDSOFTWARE=`find /usr/local/src -type d -maxdepth 1 2>/dev/null| awk -F\src/ '{print $2}'`
RUNLEVEL=`runlevel | awk -F\  '{print $2}'`
IPCHAINS=`which ipchains 2>/dev/null`
IPMASQADM=`which ipmasqadm 2>/dev/null`
IFCONFIG=`which ifconfig 2>/dev/null`
NETSTAT=`which netstat 2>/dev/null`
ROUTE=`which route 2>/dev/null`
DF=`which df 2>/dev/null`
LPC=`which lpc 2>/dev/null`
FREE=`which free 2>/dev/null`
W=`which w 2>/dev/null`
PSTREE=`which pstree 2>/dev/null`
FDISK=`which fdisk 2>/dev/null`

IDEPROCDIR=`ls --ignore=.* /proc/ide 2>/dev/null`

if [ ! -z "$IDEPROCDIR" ]
then 
  IDEDRIVES=`grep -r "" /proc/ide/*/model 2>/dev/null| grep hd |awk -F\ide/ '{print $2}' | awk -F\/model '{print $1 " " $2}'`
fi 

if [ -z ${PSPEED} ]
then
  PSPEED=`cat /proc/cpuinfo 2>/dev/null| grep mips | awk -F\: '{print $2}' | awk -F\. '{print $1}'`
fi

if [ $1 ]
then
  if [ -d "$1" ]
  then
    OUTPUTPATH="$1"
  fi
fi

OUT=$OUTPUTPATH$OUTPUTFILE

echo "<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML//EN\">"             > $OUT
echo "<HTML><HEAD><TITLE>Interactive Authentication Manager</TITLE></HEAD>" >> $OUT
echo "<BODY BGCOLOR=\"#F5F5F5\">" >> $OUT
echo "<CENTER><H1>$HOSTNAME - System Information Snapshot</H1></CENTER>" 			>> $OUT
echo "<CENTER><B>Date/Time of snapshot:</B> $DATE</CENTER>" 			>> $OUT
echo "<CENTER><TABLE WIDTH=100%%>" >> $OUT
echo "<TR><TD><TABLE WIDTH=100%><TR>" >> $OUT
echo "<TR><TD bgcolor=#CCCCCC><B>System Serial Number:</B></TD><TD bgcolor=#DDDDDD>$SERIAL</TD></TR>"				>> $OUT
echo "<TR><TD bgcolor=#CCCCCC><B>System Specifics:</B></TD><TD bgcolor=#DDDDDD>$PMODEL $PNAME, $PSPEED MHz<BR>"	>> $OUT
echo "                        $RAM RAM<BR>"         		>> $OUT
echo "                        $SWAP swap space<BR></TD></TR>" 		>> $OUT
echo "<TR><TD bgcolor=#CCCCCC><B>Operating System:</B></TD><TD bgcolor=#DDDDDD>$VERSION</TD></TR>"         		>> $OUT
echo "</TABLE></TD></TR>"           		>> $OUT
if [ -e "$FREE" ]
then 
  echo "<TR><TD bgcolor=#CCCCCC><B>System Memory</B></TD></TR><TR><TD bgcolor=#DDDDDD><UL><PRE>" >> $OUT
  echo "(in megabytes)" >> $OUT
  $FREE -t -o -m 2>/dev/null                                                       >> $OUT
  echo "</PRE></UL></TD></TR>"                            >> $OUT
fi

if [ -e /proc/pci ]
then
  echo "<TR><TD BGCOLOR=#CCCCCC><B>PCI Devices</B><TR><TD BGCOLOR=#DDDDDD><UL><PRE>" >> $OUT
  cat /proc/pci 2>/dev/null|grep -v "Bus" |grep :                                         >> $OUT
  echo "</PRE></TD></TR>"                     >> $OUT
fi

if [ -e /proc/scsi/scsi ]
then
  echo "<TR><TD BGCOLOR=#CCCCCC><B>SCSI Devices</B><TR><TD BGCOLOR=#DDDDDD><UL><PRE>" >> $OUT
  cat /proc/scsi/scsi 2>/dev/null|grep Vendor | awk -F\Vendor: '{print $2}' | awk -F\Model: '{print $1 $2}' | awk -F\Rev '{print $1}'   >> $OUT
  echo "</PRE></TD></TR>"                     >> $OUT
fi

if [ ! -z "$IDEDRIVES" ]
then 
  echo "<TR><TD BGCOLOR=#CCCCCC><B>IDE Devices</B><TR><TD BGCOLOR=#DDDDDD><UL><PRE>" >> $OUT
  echo "$IDEDRIVES"                                                         >> $OUT
  echo "</PRE></TD></TR>"                            >> $OUT
fi

if [ -e "$DF" ]
then 
  echo "<TR><TD BGCOLOR=#CCCCCC><B>Disk Configuration</B><TR><TD BGCOLOR=#DDDDDD><UL><PRE>" >> $OUT
  df -kvh 2>/dev/null                                                        >> $OUT
  echo "</PRE></TD></TR>"                            >> $OUT
fi

if [ -e "$FDISK" ]
then 
  echo "<TR><TD BGCOLOR=#CCCCCC><B>Partition Tables</B><TR><TD BGCOLOR=#DDDDDD><UL><PRE>" >> $OUT
  $FDISK -l 2>/dev/null                                                        >> $OUT
  echo "</PRE></TD></TR>"                            >> $OUT
fi

if [ -e "$IFCONFIG" ]
then 
  echo "<TR><TD BGCOLOR=#CCCCCC><B>Network Interfaces</B><TR><TD BGCOLOR=#DDDDDD><UL><PRE>"        >> $OUT
  $IFCONFIG -a 2>/dev/null                                                   >> $OUT
  echo "</PRE></TD></TR>"                            >> $OUT
fi

if [ -e "$NETSTAT" ]
then 
  echo "<TR><TD BGCOLOR=#CCCCCC><B>Network Routes</B><TR><TD BGCOLOR=#DDDDDD><UL><PRE>"        >> $OUT
  $NETSTAT -rn 2>/dev/null                                                   >> $OUT
  echo "</PRE></TD></TR>"                            >> $OUT
elif [ -e "$ROUTE" ]
then 
  echo "<TR><TD BGCOLOR=#CCCCCC><B>Network Routes</B><TR><TD BGCOLOR=#DDDDDD><UL><PRE>"        >> $OUT
  $ROUTE -n 2>/dev/null                                                   >> $OUT
  echo "</PRE></TD></TR>"                            >> $OUT
fi

if [ -e "$IPCHAINS" ]
then 
  echo "<TR><TD BGCOLOR=#CCCCCC><B>Firewall Rules</B><TR><TD BGCOLOR=#DDDDDD><UL><PRE>"        >> $OUT
  $IPCHAINS -L -n 2>/dev/null                                                   >> $OUT
  echo "</PRE></TD></TR>"                            >> $OUT
fi

if [ -e "$IPMASQADM" ]
then 
  echo "<TR><TD BGCOLOR=#CCCCCC><B>Port Forwarding Rules</B><TR><TD BGCOLOR=#DDDDDD><UL><PRE>"        >> $OUT
  $IPMASQADM portfw -l -n 2>/dev/null                                                   >> $OUT
  echo "</PRE></TD></TR>"                            >> $OUT
fi

if [ -e /etc/lilo.conf ]
then 
  echo "<TR><TD BGCOLOR=#CCCCCC><B>/etc/lilo.conf</B><TR><TD BGCOLOR=#DDDDDD><UL><PRE>"     >> $OUT
  cat /etc/lilo.conf 2>/dev/null                                            >> $OUT
  echo "</PRE></TD></TR>"                            >> $OUT
fi

if [ -e /etc/inetd.conf ]
then 
  echo "<TR><TD BGCOLOR=#CCCCCC><B>Inetd Services</B><TR><TD BGCOLOR=#DDDDDD><UL><PRE>" >> $OUT
  cat /etc/inetd.conf 2>/dev/null| grep -v "#" |grep -G "\s"                >> $OUT
  echo "</PRE></TD></TR>"                   >> $OUT
fi

if [ -d /etc/rc"$RUNLEVEL".d ]
then 
  echo "<TR><TD BGCOLOR=#CCCCCC><B>rc"$RUNLEVEL".d Services</B><TR><TD BGCOLOR=#DDDDDD><UL><PRE>" >> $OUT
  ls /etc/rc"$RUNLEVEL".d/S* 2>/dev/null                               >> $OUT
  echo "</PRE></TD></TR>"                   >> $OUT
else 
  echo "<TR><TD BGCOLOR=#CCCCCC><B>rc"$RUNLEVEL".d Services</B><TR><TD BGCOLOR=#DDDDDD><UL><PRE>" >> $OUT
  ls /etc/*/rc"$RUNLEVEL".d/S* 2>/dev/null                                >> $OUT
  echo "</PRE></TD></TR>"                   >> $OUT
fi

#if [ -e /etc/smb.conf ]
#then 
#  echo "<TR><TD BGCOLOR=#CCCCCC><B>Samba Shares</B><TR><TD BGCOLOR=#DDDDDD><UL><PRE>" >> $OUT
#  grep "[\['path']" /etc/*/smb.conf 2>/dev/null| grep -v "[;#]"                >> $OUT
#  echo "</PRE></TD></TR>"                             >> $OUT
#fi

if [ -e "$LPC" ]
then 
  echo "<TR><TD BGCOLOR=#CCCCCC><B>Print queues</B><TR><TD BGCOLOR=#DDDDDD><UL><PRE>" >> $OUT
  $LPC status 2>/dev/null                                            >> $OUT
  echo "</PRE></TD></TR>"                             >> $OUT
fi


if [ -e /proc/rd ]
then
	echo "<TR><TD BGCOLOR=#CCCCCC><B> RAID controller"              		>> $OUT
	echo "</B><TR><TD BGCOLOR=#DDDDDD><UL><PRE>"			>> $OUT
	cat /proc/rd/c*/current_status 2>/dev/null			>> $OUT
	echo "</PRE></TD></TR>"			>> $OUT
fi

if [ -e /proc/ioports ]
then
  echo "<TR><TD BGCOLOR=#CCCCCC><B>I/O Ports</B><TR><TD BGCOLOR=#DDDDDD><UL><PRE>" 		>> $OUT
  cat /proc/ioports 2>/dev/null                                    		>> $OUT
  echo "</PRE></TD></TR>"                   		>> $OUT
fi

if [ -e /proc/interrupts ]
then
  echo "<TR><TD BGCOLOR=#CCCCCC><B>Interrupts</B><TR><TD BGCOLOR=#DDDDDD><UL><PRE>" >> $OUT
  cat /proc/interrupts 2>/dev/null                                  >> $OUT
  echo "</PRE></TD></TR>"                    >> $OUT
fi

if [ -e "$W" ]
then 
  echo "<TR><TD BGCOLOR=#CCCCCC><B>Uptime/Load/Logged In Users</B><TR><TD BGCOLOR=#DDDDDD><UL><PRE>" >> $OUT
  $W 2>/dev/null                                            >> $OUT
  echo "</PRE></TD></TR>"                             >> $OUT
fi

if [ -d /usr/local/src ]
then 
  echo "<TR><TD BGCOLOR=#CCCCCC><B>Software Source On The Machine</B><BR><FONT size=-2>(Directories in /usr/local/src)</font><TR><TD BGCOLOR=#DDDDDD><UL><PRE>" >> $OUT
  echo "$INSTALLEDSOFTWARE"                                  >> $OUT
  echo "</PRE></TD></TR>"                             >> $OUT
fi

if [ -e "$PSTREE" ]
then 
  echo "<TR><TD BGCOLOR=#CCCCCC><B>Current Running Processes</B><TR><TD BGCOLOR=#DDDDDD><UL><PRE>" >> $OUT
  pstree -c -n 2>/dev/null                                            >> $OUT
  echo "</PRE></TD></TR>"                             >> $OUT
fi

echo "</TABLE></CENTER>" >>$OUT
echo "<HR><FONT SIZE=-1><B>System Information Snapshot - Version $SCRIPTVERSION</B></FONT>" >>$OUT
echo "</BODY></HTML>" >>$OUT

