#!/bin/bash ############################################################################## # Copyright (c) J.S Unix Consultants Ltd ############################################################################## # # # FILE : linux-explorer.sh # Last Change Date : 14-12-2008 # Author(s) : Joe Santoro # Date Started : 15th April, 2004 # Email : Joe.Santoro@unix-consultants.co.uk # Web : http://www.unix-consultants.co.uk/examples/scripts/linux/linux-explorer # # Usage : ./linux-explorer.sh [-d] [-v] [-s] [-h] [-V] # # Purpose : This script is a linux version of the Solaris explorer # (SUNWexplo) script. # # Used to collect as much information about a linux # system build for remote support supposes. # This script is a general purpose script for ALL linux # systems and therefore NOT tied into any one distro. # ############################################################################## # # J.S UNIX CONSULTANTS LTD MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE # SUITABILITY OF THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT # LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A # PARTICULAR PURPOSE, OR NON-INFRINGEMENT. J.S UNIX CONSULTANTS LTD SHALL # NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, # MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. # ############################################################################## COPYRIGHT="Copyright (c) J.S Unix Consultants Ltd" MYVERSION="0.102" MYDATE="$(/bin/date +'%Y.%m.%d.%m.%H.%M')" # Date and time now MYNAME=$(basename $0) WHOAMI=$(/usr/bin/whoami) # The user running the script HOSTID=$(/usr/bin/hostid) # The Hostid of this server MYHOSTNAME=$(/bin/uname -n) # The hostname of this server TMPFILE="/tmp/$(basename $0).$$" # Tempory File TOPDIR="/opt/LINUXexplo" # Top level output directory VERBOSE=0 # Set to see the scripts progress used # only if connected to a terminal session. FULLSOFT=0 # Set to Verify Software installation # this takes a very long time # # Ensure that we are the root user # if [ "$WHOAMI" != "root" ] ; then /bin/echo /bin/echo "ERROR: Sorry only the root user can run this script" /bin/echo exit 1 fi # # Set the path for the script to run. # PATH=/bin:/usr/sbin:/sbin:/usr/sbin:/usr/local/bin:$PATH export PATH if [ -d /opt/VRTSvcs/bin ] ; then PATH=$PATH:/opt/VRTSvcs/bin export PATH fi # Remove any temporary files we create trap '$RM -f $TMPFILE >/dev/null 2>&1; exit' 0 1 2 3 15 ############################################################################## # # Function : Usage # # Notes : N/A # ############################################################################## function ShowUsage { #------------------------------------------------------------------- # Show help message #------------------------------------------------------------------- echo echo "$MYNAME Version $MYVERSION - $COPYRIGHT " echo echo " usage: $MYNAME [option] " echo echo " -d Target directory for explorer files" echo " -v Verbose output" echo " -s Verify Package Installation" echo " -h This help message" echo " -V Version Number of LINUXEXPLO" echo exit 0 } ############################################################################## # # Function : Echo # # Parameters : String to display what function is about to run # # Output : Print what section we are about to collect data for # # Notes : N/A # ############################################################################## function Echo () { if [ -t 0 ] ; then if [ ${VERBOSE} -ne 0 ] ; then /bin/echo "$*" echo "=============================================" fi if [ ${VERBOSE} -gt 1 ] ; then echo "Press Return to Continue.........." read A fi fi } ############################################################################## # # Function : mywhich # # Parameters : name of program # # Output : path of executable # # Notes : Return back the location of the executable # I need this as not all linux distros have the files # in the same location. # ############################################################################## function mywhich () { local command=$1 local mypath=$(which $command 2>/dev/null) if [ "$mypath" = "" ] ; then echo "Command $command not found" >> $NOTFNDLOG echo "NOT_FOUND" elif [ ! -x "$mypath" ] ; then echo "Command $command not executable" >> $NOTFNDLOG echo "NOT_FOUND" else echo "$mypath" fi } ############################################################################## # # Function : findCmds # # Parameters : None # # Output : None # # Notes : Goes and find each of the commands I want to use and # stores the information into the various variables which # is the uppercase version of the command itself. # # I need this as not all linux distros have the files # in the same location. # ############################################################################## function findCmds { # Standard commands AWK=$(mywhich awk ) BASENAME=$(mywhich basename ) CAT=$(mywhich cat ) CHKCONFIG=$(mywhich chkconfig ) CP=$(mywhich cp ) CUT=$(mywhich cut ) CHMOD=$(mywhich chmod ) DATE=$(mywhich date ) DF=$(mywhich df ) DMESG=$(mywhich dmesg ) ECHO=$(mywhich echo ) FILE=$(mywhich file ) FIND=$(mywhich find ) FREE=$(mywhich free ) GREP=$(mywhich grep ) EGREP=$(mywhich egrep ) LS=$(mywhich ls ) MKDIR=$(mywhich mkdir ) LOCALE=$(mywhich locale ) PSTREE=$(mywhich pstree ) PS=$(mywhich ps ) RM=$(mywhich rm ) SLEEP=$(mywhich sleep ) MOUNT=$(mywhich mount ) MV=$(mywhich mv ) SORT=$(mywhich sort ) TAIL=$(mywhich tail ) UNAME=$(mywhich uname ) UPTIME=$(mywhich uptime ) WHO=$(mywhich who ) ZIP=$(mywhich zip ) GZIP=$(mywhich gzip ) GAWK=$(mywhich gawk ) SED=$(mywhich sed ) GUNZIP=$(mywhich gunzip ) # Selinux SESTATUS=$(mywhich sestatus ) GETSEBOOL=$(mywhich getsebool ) SEMANAGE=$(mywhich semanage ) # Samba TESTPARM=$(mywhich testparm ) WBINFO=$(mywhich wbinfo ) # Apache APACHECTL=$(mywhich apachectl ) APACHE2CTL=$(mywhich apache2ctl ) # Packages APTCONFIG=$(mywhich apt-config ) RPM=$(mywhich rpm ) DPKG=$(mywhich dpkg ) EMERGE=$(mywhich emerge ) YUM=$(mywhich yum ) # Kernel Info SYSCTL=$(mywhich sysctl ) KSYMS=$(mywhich ksyms ) # H/W Info ACPI=$(mywhich acpi ) CARDCTL=$(mywhich cardclt ) DUMPE2FS=$(mywhich dumpe2fs ) DMIDECODE=$(mywhich dmidecode ) FDISK=$(mywhich fdisk ) HDPARM=$(mywhich hdparm ) HOSTNAME=$(mywhich hostname ) HWINFO=$(mywhich hwinfo ) HWCLOCK=$(mywhich hwclock ) LVDISPLAY=$(mywhich lvdisplay ) LSMOD=$(mywhich lsmod ) LSPCI=$(mywhich lspci ) LSPNP=$(mywhich lspnp ) IPVSADM=$(mywhich ipvsadm ) LSUSB=$(mywhich lsusb ) LSDEV=$(mywhich lsdev ) LSHAL=$(mywhich lshal ) LSRAID=$(mywhich lsraid ) MDADM=$(mywhich mdadm ) SMARTCTL=$(mywhich smartclt ) PROCINFO=$(mywhich procinfo ) SFDISK=$(mywhich sfdisk ) HWPARM=$(mywhich hwparm ) SCSI_ID=$(mywhich scsi_id ) MULTIPATH=$(mywhich multipath ) DMSETUP=$(mywhich dmsetup ) NTPQ=$(mywhich ntpq ) SYSP=$(mywhich sysp ) _3DDIAG=$(mywhich 3Ddiag ) LSHW=$(mywhich lshw ) SYSTOOL=$(mywhich systool ) SWAPON=$(mywhich swapon ) # Disks LVM=$(mywhich lvm ) VGSCAN=$(mywhich vgscan ) VGDISPLAY=$(mywhich vgdisplay ) VGDISKSCAN=$(mywhich vgdiskscan ) PVSCAN=$(mywhich pvscan ) DEBUGREISERFS=$(mywhich debugreiserfs ) HDPARM=$(mywhich hdparm ) EXPORTFS=$(mywhich exportfs ) REPQUOTA=$(mywhich repquota ) TUNE2FS=$(mywhich tune2fs ) # Veritas FS PVDISPLAY=$(mywhich pvdisplay ) VXDG=$(mywhich vxdg ) VXDISK=$(mywhich vxdisk ) VXPRINT=$(mywhich vxprint ) VXLICREP=$(mywhich vxlicrep ) # Veritas Cluster HASTATUS=$(mywhich hastatus ) HARES=$(mywhich hares ) HAGRP=$(mywhich hagrp ) HATYPE=$(mywhich hatype ) HAUSER=$(mywhich hauser ) LLTSTAT=$(mywhich lltstat ) GABCONFIG=$(mywhich gabconfig ) HACF=$(mywhich hacf ) # Redhat Cluster CLUSTAT=$(mywhich clustat ) CLUSVCADM=$(mywhich clusvcadm ) # Network IFCONFIG=$(mywhich ifconfig ) IWCONFIG=$(mywhich iwconfig ) NETSTAT=$(mywhich netstat ) NFSSTAT=$(mywhich nfsstat ) ROUTE=$(mywhich route ) YPWHICH=$(mywhich ypwhich ) IP=$(mywhich ip ) MIITOOL=$(mywhich mii-tool ) IPTABLES=$(mywhich iptables ) IPCHAINS=$(mywhich ipchains ) ETHTOOL=$(mywhich ethtool ) BRCTL=$(mywhich brctl ) # Tuning IOSTAT=$(mywhich iostat ) VMSTAT=$(mywhich vmstat ) IPCS=$(mywhich ipcs ) MODPROBE=$(mywhich modprobe ) DEPMOD=$(mywhich depmod ) # Other RUNLEVEL=$(mywhich runlevel ) LSOF=$(mywhich lsof ) LPQ=$(mywhich lpq ) TAR=$(mywhich tar ) XVINFO=$(mywhich xvinfo ) POSTCONF=$(mywhich postconf ) # Virtual Server XM=$(mywhich xm ) VIRSH=$(mywhich virsh ) # Gentoo RC_UPDATE=$(mywhich rc-update ) } ############################################################################## # Get the command line options ############################################################################## while getopts "d:vhV" OPT do case "$OPT" in d) if [ $OPTARG = "/" ] ; then echo "ERROR: root directory selected as target! " echo "Exiting." exit 1 elif [ $OPTARG != "" ] ; then TOPDIR=${OPTARG%%/} fi ;; v) VERBOSE="1" ;; s) FULLSOFT="1" ;; h) ShowUsage ;; V) echo echo "LINUXexplo Version : $MYVERSION" echo exit 0 ;; esac done ############################################################################## # MAIN ############################################################################## if [ ${VERBOSE} -gt 0 ] ; then if [ -t 0 ] ; then tput clear fi fi LOGTOP="${TOPDIR}/linux" LOGDIR="${LOGTOP}/${MYHOSTNAME}-${MYDATE}" TARFILE="${LOGTOP}/${MYHOSTNAME}-${MYDATE}.tar.gz" NOTFNDLOG="${LOGDIR}/command_not_found.out" if [ ! -d $LOGDIR ] ; then /bin/mkdir -p $LOGDIR fi # go away and find ALL my commands for this script findCmds Echo "Creating Explorer Directory : $LOGDIR" if [ -d "$LOGTOP" ] ; then if [[ "${LOGTOP}" != "/" && "${LOGTOP}" != "/var" && "${LOGTOP}" != "/usr" ]] ; then if [ ${VERBOSE} -gt 0 ] ; then $ECHO "Removing ${LOGTOP}" fi $RM -rf ${LOGTOP} fi fi # echo "LOGDIR : \"${TOPDIR}/linux/${MYHOSTNAME}-${DATE}/output\" " # make sure this is a linux system if [ "$($UNAME -s)" != "Linux" ] ; then $ECHO "ERROR: This script is only for Linux systems " exit 1 fi # Make the directory I'm going to store my files if [ ! -d $LOGDIR ] ; then $MKDIR -p $LOGDIR if [ $? -ne 0 ] ; then $ECHO "ERROR: Creating directory $LOGDIR" exit 1 else $CHMOD 750 $LOGDIR fi fi # Create the default directories I'm going to use. for Dir in etc system disks lp san var logs hardware boot do if [ ! -d ${LOGDIR}/${Dir} ] ; then $MKDIR -p ${LOGDIR}/${Dir} if [ $? -ne 0 ] ; then $ECHO "ERROR: Creating directory $LOGDIR" exit 1 else $CHMOD 750 ${LOGDIR}/${Dir} fi fi done ############################################################################## # We need the password file and the group file so that we can work out who # owns what file. # Notice we are not copying the shadow file !! ############################################################################## $CP -p /etc/passwd ${LOGDIR}/etc/passwd $CP -p /etc/group ${LOGDIR}/etc/group if [ -f /etc/sudoers ] ; then $CP -p /etc/sudoers ${LOGDIR}/etc/sudoers fi ############################################################################## # Release Section ############################################################################## Echo "Release Section" $CP -p /etc/*-release ${LOGDIR}/system if [ -f /etc/issue ] ; then $CP -p "/etc/issue" ${LOGDIR}/system/issue fi if [ -f /etc/issue.net ] ; then $CP -p /etc/issue.net ${LOGDIR}/etc/issue.net fi if [ -f /etc/motd ] ; then $CP -p /etc/motd ${LOGDIR}/etc/motd fi ############################################################################## # Hardware/Proc Section ############################################################################## Echo "Hardware/Proc Section" # Collecting information from the proc directory $MKDIR -p ${LOGDIR}/proc $FIND /proc -type f -print 2>/dev/null | \ $GREP -v "/proc/kcore" | \ $GREP -v "/proc/bus/usb" | \ $GREP -v "/proc/xen/xenbus" | \ $GREP -v "/proc/acpi/event" | \ $GREP -v "pagemap" | \ $GREP -v "clear_refs" | \ $GREP -v "/proc/kmsg" > $TMPFILE for i in $($CAT $TMPFILE) do Dirname=$(dirname $i) Filename=$(basename $i) if [ ! -d ${LOGDIR}${Dirname} ] ; then $MKDIR -p ${LOGDIR}${Dirname} fi if [ -e "$i" ] ; then $CAT "$i" > ${LOGDIR}${Dirname}/${Filename} 2>&1 fi done $RM -f $TMPFILE ############################################################################## # Device Information ############################################################################## if [ -x $CARDCTL ] ; then $CARDCTL info > ${LOGDIR}/hardware/cardctl-info.out 2>&1 $CARDCTL status > ${LOGDIR}/hardware/cardctl-status.out 2>&1 # $CARDCTL ident > ${LOGDIR}/hardware/cardctl-ident.out 2>&1 fi if [ -x $LSPCI ] ; then $LSPCI > ${LOGDIR}/hardware/lspci.out 2>&1 $LSPCI -n > ${LOGDIR}/hardware/lspci-n.out 2>&1 $LSPCI | while read line do Bus=$($ECHO $line 2>/dev/null | awk '{ print $1 }') $LSPCI -vv -s $Bus > ${LOGDIR}/hardware/lspci_-vv_-s_${Bus}.out 2>&1 done fi if [ -x "$LSUSB" ] ; then $LSUSB -xv > ${LOGDIR}/hardware/lsusb_-xv.out 2>&1 $LSUSB -tv > ${LOGDIR}/hardware/lsusb_-tv.out 2>&1 fi if [ -x "$LSDEV" ] ; then $LSDEV -type adaptor > ${LOGDIR}/hardware/lsdev_-type_adaptor.out 2>&1 fi if [ -x "$ACPI" ] ; then $ACPI -V > ${LOGDIR}/hardware/acpi-V.out 2>&1 fi if [ -x $FREE ] ; then $FREE > ${LOGDIR}/hardware/free.out $FREE -k > ${LOGDIR}/hardware/free_-k.out fi $LS -laR /dev > ${LOGDIR}/hardware/ls-laR_dev.out if [ -d /udev ] ; then $LS -laR /udev > ${LOGDIR}/hardware/ls-laR_udev.out fi # Tape information if [ -f /etc/stinit.def ] ; then $CP -p /etc/stinit.def ${LOGDIR}/etc/stinit.def fi # Global Devices list if [ -x "$LSHAL" ] ; then $LSHAL > ${LOGDIR}/hardware/lshal.out fi if [ -x /usr/share/rhn/up2date_client/hardware.py ] ; then /usr/share/rhn/up2date_client/hardware.py > ${LOGDIR}/hardware/hardware.py.out 2>&1 fi if [ -x "$SMARTCTL" ] ; then for device in $( $LS /dev/hd[a-z] /dev/sd[a-z] /dev/st[0-9] /dev/sg[0-9] 2> /dev/null) do name=$( $ECHO $device | sed 's/\//_/g' ) ${SMARTCTL} -a $device 2>/dev/null 1> ${LOGDIR}/hardware/smartctl-a_${name}.out done fi ############################################################################## # Collect Hardware information from the hwinfo program if installed ############################################################################## if [ -x $HWINFO ] ; then $HWINFO > ${LOGDIR}/hardware/hwinfo.out 2>&1 $HWINFO --isapnp > ${LOGDIR}/hardware/hwinfo_--isapnp.out 2>&1 $HWINFO --scsi > ${LOGDIR}/hardware/hwinfo_--scsi.out 2>&1 $HWINFO --framebuffer > ${LOGDIR}/hardware/hwinfo_--framebuffer.out 2>&1 fi if [ -x "$PROCINFO" ] ; then $PROCINFO > ${LOGDIR}/hardware/procinfo.out 2>&1 fi if [ -x "$DMIDECODE" ] ; then $DMIDECODE > ${LOGDIR}/hardware/dmidecode.out 2>&1 fi if [ -x $LSHW ] ; then $LSHW > ${LOGDIR}/hardware/lshw.out 2>&1 fi ############################################################################## # Boot Section ############################################################################## Echo "Boot Section" if [ -x "/sbin/lilo" ] ; then /sbin/lilo -q > $LOGDIR/system/lilo_-q 2>&1 fi $LS -alR /boot > ${LOGDIR}/system/ls-alR_boot.out 2>&1 $MKDIR -p ${LOGDIR}/boot/grub for i in /boot/grub/menu.lst /boot/grub/grub.conf \ /boot/grub.conf /boot/grub/device.map do if [ -f ${i} ] ; then $CP -p ${i} ${LOGDIR}/${i} fi done if [ -f /etc/inittab ] ; then $CP -p /etc/inittab ${LOGDIR}/etc/inittab fi ############################################################################## # /etc Config Files Section ############################################################################## Echo "/etc Config Files Section" for i in $( $FIND /etc -name "*.conf" -o -name "*.cf" ) do dirname="$(dirname $i)" filename="$(basename $i)" if [ ! -d ${LOGDIR}/${dirname} ] ; then $MKDIR -p ${LOGDIR}/${dirname} fi $CP -p $i ${LOGDIR}/${dirname}/${filename} done if [ -f /etc/nologin.txt ] ; then $CP -p /etc/nologin.txt ${LOGDIR}/etc/nologin.txt fi $CP -p /etc/securetty ${LOGDIR}/etc/securetty $CP -p /etc/shells ${LOGDIR}/etc/shells if [ -f /etc/krb.realms ] ; then $CP -p /etc/krb.realms ${LOGDIR}/etc/krb.realms fi ############################################################################## # Copy the /etc/profile.d scripts ############################################################################## if [ -d /etc/profile.d ] ; then $CP -Rp /etc/profile.d ${LOGDIR}/etc fi ############################################################################## # New in Fedora 9 ############################################################################## if [ -d /etc/event.d ] ; then $CP -Rp /etc/event.d ${LOGDIR}/etc fi ############################################################################## # Get all the pcmcia config information ############################################################################## if [ -d /etc/pcmcia ] ; then if [ ! -d ${LOGDIR}/pcmcia ] ; then $MKDIR -p ${LOGDIR}/etc/pcmcia fi $CP -R -p /etc/pcmcia/*.opts ${LOGDIR}/etc/pcmcia fi ############################################################################## # Performance/System Section ############################################################################## Echo "Performance/System Section" if [ -e /proc/loadavg ] ; then $CAT /proc/loadavg > ${LOGDIR}/system/loadavg.out fi if [ -e /proc/stat ] ; then $CAT /proc/stat > ${LOGDIR}/system/stat.out fi $DATE > ${LOGDIR}/system/date.out $FREE > ${LOGDIR}/system/free.out $PS auxw > ${LOGDIR}/system/ps-auxw.out $PSTREE > ${LOGDIR}/system/pstree.out $HOSTNAME > ${LOGDIR}/system/hostname.out $IPCS -a > ${LOGDIR}/system/ipcs-a.out $IPCS -u > ${LOGDIR}/system/ipcs-u.out $IPCS -l > ${LOGDIR}/system/ipcs-l.out $UPTIME > ${LOGDIR}/system/uptime.out ulimit -a > ${LOGDIR}/system/ulimit-a.out ############################################################################## # OK not sure where this should go so I've put it here instead ############################################################################## if [ "$LSOF" != "" ] ; then $LSOF > ${LOGDIR}/system/lsof.out 2>&1 fi ############################################################################## # Kernel Section ############################################################################## Echo "Kernel Section" $SYSCTL -A > ${LOGDIR}/etc/sysctl_-A.out 2>&1 $UNAME -a > ${LOGDIR}/system/uname_-a.out $RUNLEVEL > ${LOGDIR}/system/runlevel.out $WHO -r > ${LOGDIR}/system/who_-r.out if [ -f /etc/conf.modules ] ; then $CP -p /etc/conf.modules ${LOGDIR}/etc/conf.modules fi if [ ! -d ${LOGDIR}/kernel/info ] ; then $MKDIR -p ${LOGDIR}/kernel/info fi $LSMOD | while read line do kernmod=$( $ECHO $line | $AWK '{ print $1 }' ) $MODINFO $kernmod > ${LOGDIR}/kernel/info/${kernmod}.out 2>&1 done $LSMOD > ${LOGDIR}/kernel/lsmod.out 2>&1 $KSYMS > ${LOGDIR}/kernel/ksyms.out 2>&1 $CP -p /lib/modules/$($UNAME -r)/modules.dep ${LOGDIR}/kernel/modules.dep $MODPROBE -n -l -v > ${LOGDIR}/kernel/modprobe_-n-l-v.out 2>&1 $DEPMOD -av > ${LOGDIR}/kernel/depmod_-av.out 2>&1 $CAT /proc/modules > ${LOGDIR}/kernel/modules.out 2>&1 ############################################################################## # Just incase we have a debian system ############################################################################## if [ -f /etc/kernel-pkg.conf ] ; then $CP -p /etc/kernel-pkg.conf ${LOGDIR}/etc/kernel-pkg.conf fi if [ -f /etc/kernel-img.conf ] ; then $CP -p /etc/kernel-img.conf ${LOGDIR}/etc/kernel-img.conf fi ############################################################################## # Get the kernel configuration details from a 2.6 kernel ############################################################################## if [ -f /proc/config.gz ] ; then gunzip -c /proc/config.gz > ${LOGDIR}/kernel/config fi ############################################################################## # Hot Plug Section ############################################################################## Echo "Hot Plug Section" if [ -d /etc/hotplug ] ; then if [ ! -d ${LOGDIR}/etc/hotplug ] ; then $MKDIR -p ${LOGDIR}/etc/hotplug fi cd /etc/hotplug $CP -Rp * ${LOGDIR}/etc/hotplug/ fi ############################################################################## # Disk Section ############################################################################## Echo "Disk Section" # Check to see what is mounted $DF -k > ${LOGDIR}/disks/df_-k.out 2>&1 $DF -ki > ${LOGDIR}/disks/df_-ki.out 2>&1 $DF -aki > ${LOGDIR}/disks/df_-aki.out 2>&1 $DF -akih > ${LOGDIR}/disks/df_-akih.out 2>&1 if [ -x $SWAPON ] ; then $SWAPON -s > ${LOGDIR}/disks/swapon_-s.out 2>&1 fi $MOUNT > ${LOGDIR}/disks/mount.out 2>&1 $CAT /proc/mounts > ${LOGDIR}/disks/mounts.out 2>&1 # fstab Information $CP -p /etc/fstab ${LOGDIR}/disks/fstab # Display any quotas that my have been set $REPQUOTA -av > ${LOGDIR}/disks/repquota_-av 2>&1 ############################################################################## # Disk Format Information ############################################################################## DISKLIST=$($FDISK -l 2>/dev/null | grep "^/dev" | sed 's/[0-9]//g' | awk '{ print $1 }' | sort -u) if [ -x $FDISK ] ; then $FDISK -l > ${LOGDIR}/disks/fdisk_-l.out 2>&1 fi if [ -x $SFDISK ] ; then $SFDISK -l > ${LOGDIR}/disks/sfdisk_-l.out 2>&1 $SFDISK -s > ${LOGDIR}/disks/sfdisk_-s.out 2>&1 fi for DISK in $DISKLIST do NEWDISK=$($ECHO $DISK | sed s'/\/dev\///g' ) if [ -x $HDPARM ]; then $HDPARM -vIi $DISK > ${LOGDIR}/disks/hdparm_-vIi_${NEWDISK} 2>&1 fi if [ -x $SFDISK ] ; then $SFDISK -l $DISK > ${LOGDIR}/disks/sfdisk_-l_-${NEWDISK}.out 2>&1 fi if [ -x $FDISK ] ; then $FDISK -l $DISK > ${LOGDIR}/disks/fdisk_-l_-${NEWDISK}.out 2>&1 fi done if [ -x "$DUMPE2FS" ] ; then PARTS=$($FDISK -l 2>/dev/null | grep "^/dev" | awk '{ print $1 }') for parts in $PARTS do name=$(echo $parts | sed 's/\//_/g') $DUMPE2FS $parts > ${LOGDIR}/disks/dumpe2fs${name}.out 2>&1 done fi ############################################################################## # Collect Detailed SCSI information about the disks ############################################################################## if [ -x "$SCSI_ID" ] ; then for i in $($LS sd[a-z] 2>/dev/null) do if [ -b /dev/${i} ] ; then disk_name=$(echo /dev/${i} | sed 's/\//_/g') $SCSI_ID -g -p 0x80 -d /dev/${i} -s /block/${i} \ > ${LOGDIR}/disks/scsi_id_-g_-p_0x80_${disk_name}.out 2>&1 $SCSI_ID -g -p 0x83 -d /dev/${i} -s /block/${i} \ > ${LOGDIR}/disks/scsi_id_-g_-p_0x83_${disk_name}.out 2>&1 fi done fi if [ -x $SYSTOOL ] ; then $SYSTOOL -c scsi_host -v > ${LOGDIR}/disks/systool_-c_scsi_host_-v.out 2>&1 fi ############################################################################## # If we are using multi-pathings then print out the # multi-pathing information ############################################################################## if [ -x "$MULTIPATH" ] ; then $MULTIPATH -ll > ${LOGDIR}/disks/multipath_-ll.out 2>&1 $MULTIPATH -v2 > ${LOGDIR}/disks/multipath_-v2.out 2>&1 fi if [ -x "$DMSETUP" ] ; then $DMSETUP ls > ${LOGDIR}/disks/dmsetup_ls.out 2>&1 fi ############################################################################## # Veritas Volume Manager / Symantec Veritas Storage Foundation Information ############################################################################## # # Changes - "Vincent S. Cojot" - 04-11-2008 # added licence checks # VxVM/VxFS Configuration Backups # Some minor bug fixes # ############################################################################## if [ -d /etc/vx/licenses/lic ] ; then Echo "Veritas Volume Manager / Symantec Veritas Storage Foundation Section" Echo "VxVM/VxFS/VCS/VVR licensing Section" if [ ! -d ${LOGDIR}/etc/vx/licenses/lic ] ; then $MKDIR -p ${LOGDIR}/etc/vx/licenses/lic fi $CP -Rp /etc/vx/licenses/lic ${LOGDIR}/etc/vx/licenses/ $VXLICREP -e > ${LOGDIR}/system/vxlicrep_-e.out 2>&1 fi if [ -d /etc/vx/cbr/bk ] ; then Echo "VxVM/VxFS Configuration Backups" if [ ! -d ${LOGDIR}/etc/vx/cbr/bk ] ; then $MKDIR -p ${LOGDIR}/etc/vx/cbr/bk fi $CP -Rp /etc/vx/cbr/bk ${LOGDIR}/etc/vx/cbr/ fi if [ -d /dev/vx ] ; then Echo "VxVM live configuration" if [ ! -d ${LOGDIR}/disks/vxvm ] ; then $MKDIR -p ${LOGDIR}/disks/vxvm $MKDIR -p ${LOGDIR}/disks/vxvm/logs $MKDIR -p ${LOGDIR}/disks/vxvm/disk_groups fi $LS -laR /dev/vx > ${LOGDIR}/disks/vxvm/ls-lR_dev_vx.out 2>&1 if [ -x $VXDISK ] ; then $VXDISK list > ${LOGDIR}/disks/vxvm/vxdisk_list.out 2>&1 $VXDISK -o alldgs list > ${LOGDIR}/disks/vxvm/vxdisk_-o_alldgs_list.out 2>&1 $VXPRINT -Ath > ${LOGDIR}/disks/vxvm/vxprint_-Ath.out 2>&1 $VXPRINT -h > ${LOGDIR}/disks/vxvm/vxprint_-h.out 2>&1 $VXPRINT -hr > ${LOGDIR}/disks/vxvm/vxprint_-hr.out 2>&1 $VXPRINT -th > ${LOGDIR}/disks/vxvm/vxprint_-th.out 2>&1 $VXPRINT -thrL > ${LOGDIR}/disks/vxvm/vxprint_-thrL.out 2>&1 fi if [ -x $VXDG ] ; then $VXDG -q list > ${LOGDIR}/disks/vxvm/vxdg_-q_-list.out 2>&1 fi #------------------------------------------------------------------------ # Collect individual volume information #------------------------------------------------------------------------ for i in $($VXDG -q list|awk '{print $1}') do $VXDG list $i > ${LOGDIR}/disks/vxvm/disk_groups/vxdg_list_${i}.out $VXDG -g $i free > ${LOGDIR}/disks/vxvm/disk_groups/vxdg_-g_free_${i}.out $VXPRINT -vng $i > ${LOGDIR}/disks/vxvm/disk_groups/vxprint_-vng_${i}.out VOL=$(cat ${LOGDIR}/disks/vxvm/disk_groups/vxprint_-vng_${i}.out) $VXPRINT -hmQqg $i $VOL \ > ${LOGDIR}/disks/vxvm/disk_groups/vxprint_-hmQqg_4vxmk=${i}.out 2>&1 $VXPRINT -hmQqg $i \ > ${LOGDIR}/disks/vxvm/disk_groups/vxprint_-hmQqg=${i}.out 2>&1 done fi ############################################################################## # Get the filesystems Characteristics ############################################################################## for i in $($DF -kl | grep ^/dev | awk '{ print $1 }') do if [ -x $TUNE2FS ] ; then name=$(echo $i | sed 's/\//_/g') $TUNE2FS -l $i > ${LOGDIR}/disks/tunefs_-l_${name}.out 2>&1 fi done ############################################################################## # NFS Information ############################################################################## # Copy NFS config files around if [ -f /etc/auto.master ] ; then $CP -p /etc/auto* ${LOGDIR}/etc fi # lets see what we have really exported if [ -x $EXPORTFS ] ; then $EXPORTFS -v > ${LOGDIR}/disks/exportfs_-v.out 2>&1 fi # This is what we have configured to be exported if [ -f /etc/exports ] ; then $CP -p /etc/exports ${LOGDIR}/etc/exports fi if [ -x "$NFSSTAT" ] ; then $NFSSTAT -a > ${LOGDIR}/disks/nfsstat_-a.out 2>&1 fi ############################################################################## # Raid Information ############################################################################## if [ -f /etc/raidtab ] ; then $CP -p /etc/raidtab ${LOGDIR}/etc/raidtab fi $MKDIR ${LOGDIR}/disks/raid if [ -x "$LSRAID" ] ; then for i in $( $LS /dev/md[0-9]* 2>/dev/null ) do name=$($ECHO $i | sed 's/\//_/g') $LSRAID -a $i > ${LOGDIR}/disks/raid/lsraid_-a_${name}.out > /dev/null 2>&1 done fi if [ -x "$MDADM" ] ; then for i in $( $LS /dev/md[0-9]* 2>/dev/null ) do name=$( $ECHO $i | sed 's/\//_/g' ) $MDADM --detail $i > ${LOGDIR}/disks/raid/mdadm_--detail_${name}.out > /dev/null 2>&1 if [ ! -s ${LOGDIR}/disks/raid/mdadm--detail_${name}.out ] ; then $RM -f ${LOGDIR}/disks/raid/mdadm--detail_${name}.out fi done fi ############################################################################## # LVM Information ############################################################################## LVMDIR=${LOGDIR}/disks/lvm $MKDIR -p ${LVMDIR} if [ -x "$LVDISPLAY" ] ; then $LVDISPLAY -v > ${LVMDIR}/lvdisplay_-v.out 2>&1 $VGDISPLAY -vv > ${LVMDIR}/vgdisplay_-vv.out 2>&1 $VGSCAN -v > ${LVMDIR}/vgscan_-v.out 2>&1 $VGDISKSCAN -v > ${LVMDIR}/vgdiskscan_-v.out 2>&1 $PVSCAN -v > ${LVMDIR}/pvscan_-v.out 2>&1 $PVDISPLAY -v > ${LVMDIR}/pvdisplay_-v.out 2>&1 fi if [ -x "$LVM" ] ; then $LVM dumpconfig > ${LVMDIR}/lvm_dumpconfig.out 2>&1 $LVM lvs > ${LVMDIR}/lvm_lvs.out 2>&1 fi ############################################################################## # Software Section ############################################################################## Echo "Software Section" $MKDIR -p ${LOGDIR}/software/rpm-packages if [ -x "$RPM" ] ; then if [ -x "$CHKCONFIG" ] ; then $CHKCONFIG --list > ${LOGDIR}/software/chkconfig--list.out 2>&1 fi # # Short Description of all packages installed # $ECHO "Package_Name Version Size Description" > ${LOGDIR}/software/rpm-qa--queryformat.out $ECHO "===================================================================================" >> ${LOGDIR}/software/rpm-qa--queryformat.out $RPM -qa --queryformat '%-25{NAME} %-16{VERSION} %-10{RELEASE} %-10{DISTRIBUTION} %-10{SIZE} %-10{INSTALLTIME:date} %{SUMMARY}\n' | sort >> ${LOGDIR}/software/rpm-qa--queryformat.out 2>&1 # # Long Description of all packages installed # $RPM -qa > ${LOGDIR}/software/rpm_-qa 2>&1 $CAT ${LOGDIR}/software/rpm_-qa | while read line do $RPM -qi $line > ${LOGDIR}/software/rpm-packages/${line}.out 2>&1 if [ $? -ne 0 ] ; then $ECHO "ERROR: ${line} problem" fi done ############################################################# # If you enable verification then this then it's going to # take a some time to complete........ ############################################################# if [ ${FULLSOFT} -gt 0 ] ; then $RPM -Va > ${LOGDIR}/software/rpm-Va.out 2>&1 fi fi if [ -f /usr/lib/rpm/rpmrc ] ; then $CP -p /usr/lib/rpm/rpmrc ${LOGDIR}/software/rpmrc fi # Make a copy of the yum config files so that we can compare them YUMDIR=${LOGDIR}/software/yum if [ -d /etc/yum.repos.d ] ; then $MKDIR -p $YUMDIR/yum.repos.d $CP /etc/yum.repos.d/* $YUMDIR/yum.repos.d/ fi if [ -x "$YUM" ] ; then $YUM list installed > ${YUMDIR}/yum_list_installed.out 2>&1 $YUM info installed > ${YUMDIR}/yum_info_installed.out 2>&1 fi ############################################################################## # Some Debian specific info here for packages ############################################################################## if [ -f /var/lib/dpkg/available ] ; then $MKDIR -p ${LOGDIR}/var/lib/dpkg if [ -d /etc/apt ] ; then $MKDIR -p ${LOGDIR}/etc/apt fi if [ -f /etc/apt/sources.list ] ; then $CP -p /etc/apt/sources.list ${LOGDIR}/etc/apt/sources.list fi if [ -f /etc/apt/apt.conf ] ; then $CP -p /etc/apt/apt.conf ${LOGDIR}/etc/apt/apt.conf fi if [ -f /etc/apt/apt.conf ] ; then $CP -p /etc/apt/apt.conf ${LOGDIR}/etc/apt/apt.conf fi if [ -f /var/lib/dpkg/status ] ; then $CP -p /var/lib/dpkg/status ${LOGDIR}/var/lib/dpkg/status fi if [ -x "$DPKG" ] ; then $DPKG --list > ${LOGDIR}/software/dpkg_--list.out $DPKG -al > ${LOGDIR}/software/dpkg_-al.out $DPKG --get-selections > ${LOGDIR}/software/dpkg_-get-selections.out fi if [ -x /usr/bin/apt-config ] ; then /usr/bin/apt-config dump > ${LOGDIR}/software/apt-config_dump.out fi fi ############################################################################## # This Section is for Gentoo - so we can work out what packages are installed # Provided by Adam Bills ############################################################################## GENTOPKGS=${LOGDIR}/software/gento_kgs.out if [ -d /var/db/pkg ] ; then ( find /var/db/pkg -type f -name environment.bz2 | while read x; do bzcat $x | \ awk -F= '{ if ($1 == "CATEGORY"){ printf "%s ", $2; } if ($1 == "PN"){ printf "%s ",$2; } if ($1 == "PV"){ print $2; } }' ; done ) >> $GENTOPKGS fi # Show the bootup info if [ -x $RC_UPDATE ] ; then $RC_UPDATE show >> ${LOGDIR}/software/rc-update_show.out fi ############################################################################## # sysconfig Section ############################################################################## Echo "sysconfig Section" if [ -d /etc/sysconfig ] ; then if [ ! -d ${LOGDIR}/etc/sysconfig ] ; then $MKDIR -p ${LOGDIR}/etc/sysconfig fi $CP -p -R /etc/sysconfig/* ${LOGDIR}/etc/sysconfig fi ############################################################################## # RHN Section ############################################################################## if [ -d /etc/sysconfig/rhn ] ; then Echo "RedHat Network Section" RDIR=${LOGDIR}/rhn $MKDIR -p ${RDIR} if [ -d /etc/rhn ] ; then $CP -pR /etc/rhn/ ${LOGDIR}/etc/rhn/ if [ -f /etc/sysconfig/rhn/systemid ] ; then if [ -x /usr/bin/xsltproc ] ; then /usr/bin/xsltproc $UTILDIR/text.xsl $RDIR/systemid \ > $ROOT/$RHNDIR/systemid 2>&1 fi fi fi fi # if [ -x /usr/bin/rhn-schema-version ] ; then # /usr/bin/rhn-schema-version >$RDIR}/ # fi # if [ -x /usr/bin/rhn-charsets ] ; then # /usr/bin/rhn-charsets # fi ############################################################################## # Systems Log Section ############################################################################## Echo "Systems Log Section" $CP -R -p /var/log/* ${LOGDIR}/logs $DMESG > ${LOGDIR}/logs/dmesg.out ############################################################################## # SELINUX ############################################################################## Echo "SElinux Section" SELINUXDIR=${LOGDIR}/selinux $MKDIR -p ${SELINUXDIR} if [ -x $SESTATUS ] ; then $SESTATUS -bv > ${SELINUXDIR}/sestatus_-bv.out 2>&1 fi if [ -x $SEMANAGE ] ; then $SEMANAGE fcontexts -l > ${SELINUXDIR}/semanage_fcontexts_-l.out 2>&1 fi if [ -x $GETSEBOOL ] ; then $GETSEBOOL -a > ${LOGDIR}/selinux/getsebool_-a.out 2>&1 else echo "getsebool not installed " > ${LOGDIR}/selinux/getsebool_-a.out fi ############################################################################## # Xen Information ############################################################################## if [ -d /etc/xen ] ; then Echo "Xen Section" VIRT=${LOGDIR}/virtuals $MKDIR -p ${VIRT} XENETC=${LOGDIR}/xen if [ ! -d $XENETC ] ; then mkdir -p $XENETC fi $CP -Rp /etc/xen/* ${XENETC}/ $MKDIR -p ${VIRT}/xen if [ -x $XM ] ; then $XM list > $VIRT/xen/xm_list.out 2>&1 $XM info > $VIRT/xen/xm_info.out 2>&1 $XM logs > $VIRT/xen/xm_log.out 2>&1 $XM dmesg > $VIRT/xen/xm_dmesg.out 2>&1 $XM vcpu-list > $VIRT/xen/xm_vcpu-list.out 2>&1 for myHost in $($XM list 2>/dev/null | egrep -v "VCPUs |^Domain-0") do $XM network-list $myHost > $VIRT/xen/xm_network-list_${myHost}.out 2>&1 $XM uptime $myHost > $VIRT/xen/xm_uptime_${myHost}.out 2>&1 $VIRSH dominfo $myHost > $VIRT/xen/virsh_dominfo_${myHost}.out 2>&1 done fi fi ############################################################################## # yp services ############################################################################## Echo "YP Services Section" YPDIR=${LOGDIR}/yp $MKDIR -p ${YPDIR} if [ -x "$YPWHICH" ] ; then $YPWHICH -m > ${YPDIR}/ypwhich-m.out 2>&1 fi if [ -f /etc/domainname ] ; then $CP -p /etc/domainname ${LOGDIR}/etc/ $LS -lR /var/yp/$(cat /etc/domainname) > ${YPDIR}/ls_-lR.out 2>&1 fi ############################################################################## # Networking Section ############################################################################## Echo "Networking Section" for i in $($LS -d /etc/host* ) do filename=$(basename $i) $CP -p $i ${LOGDIR}/etc/${filename} done for i in $( $LS -d /etc/ftp* 2>/dev/null ) do filename=$(basename $i) $CP -p $i ${LOGDIR}/etc/$filename done $CP -p /etc/services ${LOGDIR}/etc/services if [ -f /etc/HOSTNAME ] ; then $CP -p /etc/HOSTNAME ${LOGDIR}/etc/HOSTNAME fi if [ -f /etc/hostname ] ; then $CP -p /etc/hostname ${LOGDIR}/etc/hostname fi if [ -f /etc/networks ] ; then $CP -p /etc/networks ${LOGDIR}/etc/networks fi if [ -f /etc/hosts.allow ] ; then $CP -p /etc/hosts.allow ${LOGDIR}/etc/hosts.allow fi if [ -f /etc/hosts.deny ] ; then $CP -p /etc/hosts.deny ${LOGDIR}/etc/hosts.deny fi if [ -f /etc/shells ] ; then $CP -p /etc/shells ${LOGDIR}/etc/shells fi if [ -f /etc/network/interfaces ] ; then if [ ! -d ${LOGDIR}/etc/network/interfaces ] ; then $MKDIR -p ${LOGDIR}/etc/network/interfaces fi $CP -p /etc/network/interfaces ${LOGDIR}/etc/network/interfaces fi $MKDIR -p ${LOGDIR}/network $IFCONFIG -a > ${LOGDIR}/network/ifconfig_-a.out 2>&1 $NETSTAT -rn > ${LOGDIR}/network/netstat_-rn.out 2>&1 $NETSTAT -lan > ${LOGDIR}/network/netstat_-lan.out 2>&1 $NETSTAT -lav > ${LOGDIR}/network/netstat_-lav.out 2>&1 $NETSTAT -tulpn > ${LOGDIR}/network/netstat_-tulpn.out 2>&1 $NETSTAT -ape > ${LOGDIR}/network/netstat_-ape.out 2>&1 $NETSTAT -uan > ${LOGDIR}/network/netstat_-uan.out 2>&1 $NETSTAT -s > ${LOGDIR}/network/netstat_-s.out 2>&1 $ROUTE -nv > ${LOGDIR}/network/route_-nv.out 2>&1 if [ -x "$IP" ] ; then $IP add > ${LOGDIR}/network/ip_add.out 2>&1 $IP route > ${LOGDIR}/network/ip_route.out 2>&1 $IP link > ${LOGDIR}/network/ip_link.out 2>&1 $IP rule > ${LOGDIR}/network/ip_rule.out 2>&1 fi if [ -x "$IWCONFIG" ] ; then $IWCONFIG > ${LOGDIR}/network/iwconfig.out 2>&1 fi if [ -x "${MIITOOL}" ] ; then ${MIITOOL} > ${LOGDIR}/network/mii-tool.out 2>&1 fi # # Collect bridging information # if [ -x "${BRCTL}" ] ; then $BRCTL show > ${LOGDIR}/network/brctl_show.out 2>&1 for myBridge in $($BRCTL show | grep -v "STP enabled" | grep ^[a-zA-Z] | awk '{ print $1}') do $BRCTL showmacs $myBridge > ${LOGDIR}/network/btctl_showmacs_${myBridge}.out 2>&1 $BRCTL showstp $myBridge > ${LOGDIR}/network/btctl_showstp_${myBridge}.out 2>&1 done fi ############################################################################## # Get the iptable information ############################################################################## if [ -x "$IPTABLES" ] ; then $IPTABLES -L > ${LOGDIR}/network/iptables-L.out $IPTABLES -t filter -nvL > ${LOGDIR}/network/iptables-t_filter-nvL.out $IPTABLES -t mangle -nvL > ${LOGDIR}/network/iptables-t_mangle-nvL.out $IPTABLES -t nat -nvL > ${LOGDIR}/network/iptables_-t_nat_-nvL.out else $ECHO "no iptables in kernel" > ${LOGDIR}/network/iptables-NO-IP-TABLES fi ############################################################################## # List the ipchains rules ############################################################################## if [ -x "$IPCHAINS" ] ; then $IPCHAINS -L -n > ${LOGDIR}/network/ipchains_-L_-n.out fi ############################################################################## # Lets now check the network cards speeds ############################################################################## ETHTOOL="X" if [ -x "$ETHTOOL" ] ; then for version in 4 6 do dir=/proc/sys/net/ipv${version}/conf if [ ! -d ${dir} ] ; then continue fi cd $dir INTERFACES=$( cat /proc/net/dev | grep ":" | awk '{print $1 }' | sed 's/://g') for i in $INTERFACES do $ETHTOOL $i > ${LOGDIR}/network/ethtool_ipv${version}_${i}.out 2>&1 $ETHTOOL -i $i >> ${LOGDIR}/network/ethtool_ipv${version}_${i}.out 2>&1 done done fi ############################################################################## # xinetd Section ############################################################################## Echo "xinetd Section" if [ -d /etc/xinet.d ] ; then XINETD=${LOGDIR}/etc/xinet.d $MKDIR -p ${XINETD} for i in $($LS -d /etc/xinetd.d/* ) do filename=$(basename $i) $CP -p $i ${XINETD}/$filename done fi if [ -f /etc/xinetd.log ] ; then $CP -p /etc/xinetd.log ${LOGDIR}/etc/xinetd.log fi ############################################################################## # DNS Section ############################################################################## Echo "DNS Section" if [ -f /etc/named.boot ] ; then $CP -p /etc/named.boot ${LOGDIR}/etc/named.boot fi DNSDIR="" # if [ -f "/etc/named.conf" ] ; then # DNSDIR=$($GREP -i directory /etc/named.conf | \ # $GREP -v ^# | \ # $GAWK '{ print $2 ;}' | \ # $SED s/\"//g|/bin/sed s/\;//g # ) # fi if [ "${DNSDIR}" != "" ] ; then if [ ! -d ${LOGDIR}${DNSDIR} ] ; then $MKDIR -p ${LOGDIR}${DNSDIR} fi cd ${DNSDIR} $TAR cf - . 2>/dev/null | ( cd ${LOGDIR}${DNSDIR} ; tar xpf - ) > /dev/null 2>&1 fi ############################################################################## # Cluster Section ############################################################################## CLUSTERDIR=${LOGDIR}/clusters Echo "Cluster Section" # Oracles OCFS2 cluster filesystems if [ -f /etc/ocfs2/cluster.conf ] ; then $MKDIR -p ${LOGDIR}/etc/ocfs2 $CP -p /etc/ocfs2/cluster.conf ${LOGDIR}/etc/ocfs2/cluster.conf fi # Redhat Cluster if [ -x $CLUSTAT ] ; then Echo "Veritas Cluster Section" MyClusterDir=$CLUSTERDIR/redhat mkdir -p $CLUSTERDIR/redhat $CLUSTAT > $MyClusterDir/clustat.out 2>&1 $CLUSTAT -f > $MyClusterDir/clustat_-f.out 2>&1 $CLUSTAT -l > $MyClusterDir/clustat_-l.out 2>&1 $CLUSTAT -I > $MyClusterDir/clustat_-I.out 2>&1 $CLUSTAT -v > $MyClusterDir/clustat_-v.out 2>&1 $CLUSTAT -x > $MyClusterDir/clustat_-x.out 2>&1 $CLUSVCADM -v > $MyClusterDir/clusvcadm_-x.out 2>&1 $CLUSVCADM -S > $MyClusterDir/clusvcadm_-S.out 2>&1 fi if [ -f /etc/cluster.xml ] ; then $CP -p /etc/cluster.xml ${LOGDIR}/etc/cluster.xml fi # Veritas Cluster if [ -f /etc/VRTSvcs/conf/config/main.cf ] ; then Echo "Veritas Cluster Section" VCSDIR=${LOGDIR}/clusters/veritas $MKDIR -p ${VCSDIR} $MKDIR -p ${LOGDIR}/etc/VRTSvcs/conf/config $CP -p /etc/VRTSvcs/conf/config/* ${LOGDIR}/etc/VRTSvcs/conf/config if [ -d /var/VRTSvcs/log ] ; then $MKDIR -p ${LOGDIR}/var/VRTSvcs/log $CP -p /var/VRTSvcs/log/* ${LOGDIR}/var/VRTSvcs/log fi $HASTATUS -sum > ${VCSDIR}/hastatus_-sum.out 2>&1 $HARES -list > ${VCSDIR}/hares_-list.out 2>&1 $HAGRP -list > ${VCSDIR}/hagrp_-list.out 2>&1 $HATYPE -list > ${VCSDIR}/hatype_-list.out 2>&1 $HAUSER -list > ${VCSDIR}/hauser_-list.out 2>&1 $LLTSTAT -vvn > ${VCSDIR}/lltstat_-vvn.out 2>&1 $GABCONFIG -a > ${VCSDIR}/gabconfig_-a.out 2>&1 $HACF -verify /etc/VRTSvcs/conf/config/main.cf > ${VCSDIR}/hacf-verify.out 2>&1 $CP -p /etc/llthosts ${LOGDIR}/etc $CP -p /etc/llttab ${LOGDIR}/etc $CP -p /etc/gabtab ${LOGDIR}/etc fi ############################################################################## # Crontab Section ############################################################################## Echo "Crontab Section" $MKDIR -p ${LOGDIR}/etc/cron $CP -R -p /etc/cron* ${LOGDIR}/etc if [ -d /var/spool/cron ] ; then $MKDIR -p ${LOGDIR}/var/spool/cron cd /var/spool/cron $TAR cf - . | ( cd ${LOGDIR}/var/spool/cron ; tar xpf - ) fi ############################################################################## # Printer Section ############################################################################## Echo "Printer Section" PRINTDIR=${LOGDIR}/lp $MKDIR -p ${PRINTDIR} $MKDIR -p ${PRINTDIR}/general $MKDIR -p ${LOGDIR}/etc/printcap if [ -x /usr/bin/lpstat ] ; then /usr/bin/lpstat -t > ${PRINTDIR}/lpstat_-t.out 2>&1 fi if [ -x /usr/sbin/lpc ] ; then /usr/sbin/lpc status > ${PRINTDIR}/lpstat_status.out 2>&1 fi if [ -f /etc/printcap ] ; then $CP /etc/printcap ${LOGDIR}/etc/printcap fi if [ -d /etc/cups ] ; then $MKDIR -p ${LOGDIR}/etc/cups $CP -p -R /etc/cups/* ${LOGDIR}/etc/cups fi /usr/bin/lpq > ${PRINTDIR}/general/lpq.out 2>&1 if [ -x /usr/bin/lpq.cups ] ; then /usr/bin/lpq.cups > ${PRINTDIR}/lpq.cups.out 2>&1 fi ############################################################################## # openldap Section ############################################################################## Echo "Openldap Section" if [ -d /etc/openldap ] ; then $MKDIR -p ${LOGDIR}/etc/openldap $CP -p -R /etc/openldap/* ${LOGDIR}/etc/openldap fi ############################################################################## # pam Section ############################################################################## Echo "Pam Section" $MKDIR -p ${LOGDIR}/etc/pam $CP -p -R /etc/pam.d/* ${LOGDIR}/etc/pam/ ############################################################################## # Sendmail Section ############################################################################## Echo "Sendmail Section" $MKDIR -p ${LOGDIR}/etc/mail if [ -f /etc/sendmail.cf ] ; then $CP -p /etc/sendmail.cf ${LOGDIR}/etc/sendmail.cf fi if [ -f /etc/sendmail.cw ] ; then $CP -p /etc/sendmail.cw ${LOGDIR}/etc/sendmail.cw fi if [ -d /etc/mail ] ; then for i in $($LS -d /etc/mail/* | $GREP -v \.db) ; do $CP -R -p $i ${LOGDIR}/etc/mail done fi if [ -f /etc/aliases ] ; then $CP -p /etc/aliases ${LOGDIR}/etc/aliases fi if [ -f /etc/mail/aliases ] ; then $CP -p /etc/mail/aliases ${LOGDIR}/etc/mail/aliases fi ############################################################################## # Postfix Section ############################################################################## Echo "Postfix Section" if [ -d /etc/postfix ] ; then POSTDIR=${LOGDIR}/etc/postfix $MKDIR -p $POSTDIR $CP -p -R /etc/postfix/* ${POSTDIR} $POSTCONF -v > ${POSTDIR}/postconf_-v.out 2>&1 $POSTCONF -l > ${POSTDIR}/postconf_-l.out 2>&1 fi ############################################################################## # Exim Section ############################################################################## Echo "Exim Section" if [ -d /etc/exim ] ; then EXIMDIR=${LOGDIR}/etc $CP -p -R /etc/exim ${EXIMDIR} fi ############################################################################## # Time Section ############################################################################## Echo "Time Section" TIMEDIR=${LOGDIR}/etc/time if [ ! -d ${TIMEDIR} ] ; then $MKDIR -p ${TIMEDIR} fi $DATE > ${TIMEDIR}/date if [ -f /etc/timezone ] ; then $CP -p /etc/timezone ${TIMEDIR}/timezone fi if [ -f /usr/share/zoneinfo ] ; then $CP -p /usr/share/zoneinfo ${TIMEDIR}/zoneinfo fi if [ -f /etc/ntp.drift ] ; then $CP -p /etc/ntp.drift ${TIMEDIR}/ntp.drift fi if [ -x $HWCLOCK ] ; then $HWCLOCK --show > ${TIMEDIR}/hwclock_--show.out fi if [ -x $NTPQ ] ; then $NTPQ -p > ${TIMEDIR}/ntpq_-p.out 2>&1 fi if [ -f /etc/ntp/step-tickers ] ; then $CP -p /etc/ntp/step-tickers ${LOGDIR}/etc fi if [ -f /etc/ntp/ntpservers ] ; then $CP -p /etc/ntp/ntpservers ${LOGDIR}/etc fi ############################################################################## # PPP Section ############################################################################## Echo "PPP Section" PPPDIR=${LOGDIR}/etc/ppp if [ ! -d ${PPPDIR} ] ; then $MKDIR -p ${PPPDIR} $MKDIR -p ${PPPDIR}/peers fi if [ -d /etc/ppp ] ; then $CP -R -p /etc/ppp/* ${PPPDIR} 2>&1 fi if [ -d /etc/wvdial ] ; then $CP -p /etc/ppp/options.* ${PPPDIR} > /dev/null 2>&1 $CP -p -R /etc/ppp/peers/* ${PPPDIR}/peers fi ############################################################################## # Apache Section ############################################################################## Echo "Apache Section" if [ -d /etc/httpd ] ; then APACHEDIR=${LOGDIR}/httpd else APACHEDIR=${LOGDIR}/apache fi if [ ! -d $APACHEDIR ] ; then $MKDIR -p ${APACHEDIR} fi if [ -x $APACHECTL ] ; then $APACHECTL status > ${APACHEDIR}/apachectl_status.out 2>&1 fi if [ -x $APACHE2CTL ] ; then $APACHE2CTL status > ${APACHEDIR}/apache2ctl_status.out 2>&1 fi ############################################################################## # Samba Section ############################################################################## Echo "Samba Section" SAMBADIR=${LOGDIR}/disks/samba if [ ! -d ${SAMBADIR} ] ; then $MKDIR -p ${SAMBADIR} fi if [ -x $TESTPARM ] ; then $ECHO "y" | $TESTPARM > ${SAMBADIR}/testparm.out 2>&1 fi if [ -x $wBINFO ] ; then $WBINFO -g > ${SAMBADIR}/wbinfo_-g.out 2>&1 $WBINFO -u > ${SAMBADIR}/wbinfo_-g.out 2>&1 fi ############################################################################## # Openssh Section ############################################################################## Echo "Openssh Section" SSHDIR=${LOGDIR}/etc/ssh $MKDIR -p ${SSHDIR} if [ -f /etc/nologin ] ; then $CP -p /etc/nologin ${LOGDIR}/etc/nologin fi if [ -d /etc/ssh/ssh_config ] ; then $CP -p /etc/ssh/ssh_config ${SSHDIR}/ssh_config fi if [ -d /etc/ssh/sshd_config ] ; then $CP -p /etc/ssh/sshd_config ${SSHDIR}/sshd_config fi ############################################################################## # X11 Section ############################################################################## Echo "X11 Section" XDIR=${LOGDIR}/X $MKDIR -p $XDIR if [ -d /etc/X11 ] ; then $CP -R -p /etc/X11 ${LOGDIR}/etc fi if [ -x $SYSP ] ; then $SYSP -c > ${XDIR}/sysp_-c.out $SYSP -s mouse > ${XDIR}/sysp_-s_mouse.out $SYSP -s keyboard > ${XDIR}/sysp_-s_keyboard.out fi if [ -x $_3DDIAG ] ; then $_3DDIAG > ${XDIR}/3Ddiag.out fi ############################################################################## # This section is for removing any information # about hardcoded passwords inserted in files. ############################################################################## if [ -f /etc/wvdial.conf ] ; then $CAT /etc/wvdial.conf | sed -e /^Password/d > ${LOGDIR}/etc/wvdial.conf fi ############################################################################## # Tar Up Support Directory ############################################################################## cd $LOGDIR $TAR czf ${TARFILE} . > /dev/null 2>&1 if [ -t 0 ] ; then if [ ${VERBOSE} -gt 0 ] ; then ## tput clear $CAT <<- EOF The Tar file ${TARFILE} has been created for support purposes You can email/sftp the tar file to those providing you with technical support EOF fi fi ############################################################################## # That's ALL Folks !!! ##############################################################################