# this handler will save various reports of vital system information.
# by default, all the reports are enabled and are saved in /var/backups.
#
-# (1) a list of all the packages installed and removed.
+# (1) a capture of the debconf package selection states. This file
+# can be used to restore the answers to debconf questions for
+# packages that you will be installing through (2) below. To
+# do this, run: "debconf-set-selections < debconfsel.txt"
+#
+# (2) a list of all the packages installed and removed.
# this file can be used to restore the state of installed packages
-# by running "dpkg --set-selections < dpkg-selections.txt
+# by running "dpkg --set-selections < dpkg-selections.txt and
+# then run "apt-get -u dselect-upgrade". If you have the
+# debconf-set-selections file from (1), you should restore those first.
#
-# (2) the partition table of all disks.
+# (3) the partition table of all disks.
# this partition table can be used to format another disk of
# the same size. this can be handy if using software raid and
# you have a disk go bad. just replace the disk and partition it
# by running "sfdisk /dev/sdb < partitions.sdb.txt"
# (MAKE SURE YOU PARTITION THE CORRECT DISK!!!)
#
-# (3) hardware information.
+# (4) hardware information.
# write to a text file the important things which hwinfo can gleen.
#
getconf packagesfile $parentdir/dpkg-selections.txt
getconf packagemgr `which dpkg`
getconf packagemgroptions ' --get-selections *'
+ getconf selectionsfile $parentdir/debconfsel.txt
+ getconf debconfgetselections `which debconf-get-selections`
elif [ $os = "redhat" ]
then
getconf packagesfile $parentdir/rpmpackages.txt
getconf sfdisk_options ""
getconf hwinfo_options ""
-# See if vservers are configured
+getconf vsnames all
+
+# If vservers are configured, check that the ones listed in $vsnames are running.
local usevserver=no
-if [ $vservers_are_available = yes ]
-then
- info "vserver method enabled"
+if [ $vservers_are_available = yes ]; then
+ if [ "$vsnames" = all ]; then
+ vsnames="$found_vservers"
+ fi
+ if ! vservers_running "$vsnames" ; then
+ fatal "At least one of the vservers listed in vsnames ($vsnames) is not running."
+ fi
+ info "Using vservers '$vsnames'"
usevserver=yes
fi
if [ $usevserver = yes ]; then
info "vserver root directory set to: $VROOTDIR"
- for vserver in $found_vservers; do
+ for vserver in $vsnames; do
info "examining vserver: $vserver"
# is it running ?
- $VSERVERINFO -q $vserver RUNNING
+ vservers_running $vserver
if [ $? -ne 0 ]; then
warning "The vserver $vserver is not running."
continue
# is $packagemgr available inside $vserver ?
if [ ! -x "$VROOTDIR/$vserver`$VSERVER $vserver exec which $packagemgr`" ]; then
warning "can't find $packagemgr in vserver $vserver, skipping installed packages report."
- continue
+ else
+ # don't expand * since it can be used in $packagemgroptions
+ set -o noglob
+ debug "$VSERVER $vserver exec $packagemgr $packagemgroptions > $VROOTDIR/$vserver$packagesfile"
+ $VSERVER $vserver exec $packagemgr $packagemgroptions > $VROOTDIR/$vserver$packagesfile || fatal "can not save $packagemgr info to $packagesfile"
+ set +o noglob
+ fi
+ # is $debconfgetselections available inside $vserver ?
+ if [ -z "`$VSERVER $vserver exec which debconf-get-selections`" ]; then
+ warning "can't find debconf-get-selections in vserver $vserver, skipping package selection states."
+ else
+ debug "$VSERVER $vserver exec $debconfgetselections > $VROOTDIR/$vserver$selectionsfile"
+ $VSERVER $vserver exec $debconfgetselections > $VROOTDIR/$vserver$selectionsfile || fatal "can not save debconf-get-selections info to $selectionsfile"
fi
- # don't expand * since it can be used in $packagemgroptions
- set -o noglob
- debug "$VSERVER $vserver exec $packagemgr $packagemgroptions > $VROOTDIR/$vserver$packagesfile"
- $VSERVER $vserver exec $packagemgr $packagemgroptions > $VROOTDIR/$vserver$packagesfile || fatal "can not save $packagemgr info to $packagesfile"
- set +o noglob
done
fi
$packagemgr $packagemgroptions > $packagesfile || fatal "can not save $packagemgr info to $packagesfile"
set +o noglob
fi
-
+ if [ -z "$debconfgetselections" ]; then
+ warning "can't find ${debconfgetselections}, skipping package selection states."
+ else
+ debug "$debconfgetselections > $selectionsfile"
+ $debconfgetselections > $selectionsfile || fatal "can not save $debconfgetselections info to $selectionsfile"
+ fi
fi
## System report ##############################
}
catifexec () {
- echo $HASHES >> $sysreportfile
- echo "# $STATUS" >> $sysreportfile
- echo $HASHES >> $sysreportfile
- $1 >> $sysreportfile 2>&1 || info "executing of $1 failed"
+ if [ -x $1 ]; then
+ echo $HASHES >> $sysreportfile
+ echo "# $STATUS" >> $sysreportfile
+ echo $HASHES >> $sysreportfile
+ $* >> $sysreportfile 2>&1 || info "executing of $1 failed"
+ fi
}
catifexec "/sbin/modinfo $x"
done
-STATUS="Currently getting ksysms information:"
-catifexec "/sbin/ksyms"
-
STATUS="Gathering information about your filesystems:"
catiffile "/proc/filesystems"
catiffile "/proc/partitions"
STATUS="Gathering information about your ksyms:"
-catiffile "/proc/ksyms"
+catiffile "/proc/kallsyms"
STATUS="Gathering information about slabinfo:"
catiffile "/proc/slabinfo"
catiffile "/proc/ide"
STATUS="Gathering information about your bus:"
-catifexec lspci
+catifexec "/usr/bin/lspci"
catiffile "/proc/bus"
echo
catiffile "/etc/fstab"
STATUS="Collecting disk partition information:"
-catifexec "fdisk -l"
+catifexec "/sbin/fdisk -l"
STATUS="Checking mounted file systems (mount) "
catifexec "/bin/mount"
STATUS="Collecting Software RAID information (/etc/mdadm.conf)"
catiffile "/etc/mdadm.conf"
+STATUS="Collecting Software RAID information (/sbin/mdadm -Q)"
+catifexec "/sbin/mdadm" "-Q" "--detail" '/dev/md?*'
+
STATUS="Collecting Automount information (auto.master)"
catiffile "/etc/auto.master"