X-Git-Url: https://git.stderr.nl/gitweb?p=matthijs%2Fupstream%2Fbackupninja.git;a=blobdiff_plain;f=handlers%2Fsys;h=2e181c85c2a27fba52f3441958eec01ea79bcd0b;hp=d0e2057d50bc15fdb48368c718f2a67882fb6939;hb=be75e4e6c536882c14db9a41c61585e7a9c045f6;hpb=7814d463e4e1f55b8b34c019f49a384aeee00193 diff --git a/handlers/sys b/handlers/sys index d0e2057..2e181c8 100755 --- a/handlers/sys +++ b/handlers/sys @@ -33,22 +33,25 @@ else fi getconf packages yes +getconf dosfdisk yes +getconf dohwinfo yes if [ $os = "debian" ] then getconf packagesfile /var/backups/dpkg-selections.txt getconf packagemgr `which dpkg` - getconf packagemgroptions " --get-selections" + getconf packagemgroptions ' --get-selections *' elif [ $os = "redhat" ] then getconf packagesfile /var/backups/rpmpackages.txt getconf packagemgr `which rpm` - getconf packagemgroptions " -qa " + getconf packagemgroptions ' -qa ' getconf SYSREPORT `which sysreport` - getconf sysreport_options " -norpm " + getconf sysreport_options ' -norpm ' else getconf packagesfile /var/backups/unknownOS.txt fi +packagemgroptions="${packagemgroptions//__star__/*}" getconf partitions yes getconf partitionsfile /var/backups/partitions.__star__.txt @@ -79,48 +82,41 @@ fi # if [ "$packages" == "yes" ]; then - if [ $usevserver = yes ] - then - nodpkg="lost+found|ARCHIVES" - info "vserver root directory set to: $VROOTDIR" - for vserver in $found_vservers - do - info "examining vserver: $vserver" - running=`$VSERVERINFO $vserver RUNNING` - if [ "$running" = "1" ]; then - if [ ! -x "$VROOTDIR/$vserver`$VSERVER $vserver exec which $packagemgr`" ]; then - warning "can't find $packagemgr in vserver $vserver, skipping installed packages report." - nodpkg="$nodpkg|$vserver" - fi - else - warning "vserver $vserver is not running, skipping installed packages report." - nodpkg="$nodpkg|$vserver" - fi - - done - else - if [ -z "$packagemgr" -o ! -x "$packagemgr" ]; then - warning "can't find ${packagemgr}, skipping installed packages report." - packages="no" - fi - fi -fi -if [ "$packages" == "yes" ]; then - if [ $usevserver = yes ] - then - for vserver in `ls $VROOTDIR | grep -E -v $nodpkg` - do + if [ $usevserver = yes ]; then + info "vserver root directory set to: $VROOTDIR" + for vserver in $found_vservers; do + info "examining vserver: $vserver" + # is it running ? + $VSERVERINFO -q $vserver RUNNING + if [ $? -ne 0 ]; then + warning "The vserver $vserver is not running." + continue + fi + # 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 + 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 -# We want to perform this on the host as well - if [ "$packages" == "yes" ]; then + # We want to perform this on the host as well + if [ -z "$packagemgr" -o ! -x "$packagemgr" ]; then + warning "can't find ${packagemgr}, skipping installed packages report." + else + # don't expand * since it can be used in $packagemgroptions + set -o noglob debug "$packagemgr $packagemgroptions > $packagesfile" $packagemgr $packagemgroptions > $packagesfile || fatal "can not save $packagemgr info to $packagesfile" + set +o noglob fi + fi ## System report ############################## @@ -194,7 +190,7 @@ elif [ $os = "debian" ]; then echo "Level: $level" >> $sysreportfile for f in /etc/rc${level}.d/*; do # Remove /etc/Knn or Snn from beginning - ff=$(echo $f | sed 's_/etc/rc..d/[KS][0-9][0-9]__') + ff=$(echo $f | @SED@ 's_/etc/rc..d/[KS][0-9][0-9]__') if [ $f != $ff ]; then echo $ff >> $sysreportfile fi @@ -285,7 +281,7 @@ catiffile "/proc/stat" STATUS="Gathering information about your partitions:" catiffile "/proc/partitions" -STATUS="Gathering information about your ksysms:" +STATUS="Gathering information about your ksyms:" catiffile "/proc/ksyms" STATUS="Gathering information about slabinfo:" @@ -425,14 +421,18 @@ if [ $usevserver = yes ]; then fi if [ "$partitions" == "yes" ]; then + if [ "$dosfdisk" == "yes" ]; then if [ ! -x "$SFDISK" ]; then warning "can't find sfdisk, skipping sfdisk report." partitions="no" fi + fi + if [ "$dohwinfo" == "yes" ]; then if [ ! -x "$HWINFO" ]; then warning "can't find hwinfo, skipping partition report." partitions="no" fi + fi fi if [ "$hardware" == "yes" ]; then @@ -442,6 +442,29 @@ if [ "$hardware" == "yes" ]; then fi fi +## HARDWARE ############################# + +# +# here we use hwinfo to dump a table listing all the +# information we can find on the hardware of this machine +# + +if [ "$hardware" == "yes" ]; then + if [ "dohwinfo" == "yes" ]; then + if [ -f $hardwarefile ]; then + rm $hardwarefile + fi + touch $hardwarefile + echo -e "\n\n====================== summary ======================\n" >> $hardwarefile + debug "$HWINFO --short --cpu --network --disk --pci >> $hardwarefile" + $HWINFO --short --cpu --network --disk --pci >> $hardwarefile + for flag in cpu network bios pci; do + echo -e "\n\n====================== $flag ======================\n" >> $hardwarefile + $HWINFO --$flag >> $hardwarefile + done + fi +fi + ## PARTITIONS ############################# @@ -449,37 +472,27 @@ fi # these files can be used to directly partition a disk of the same size. if [ "$partitions" == "yes" ]; then - devices=`$HWINFO --disk | grep "Device File" | cut -d\ -f5` + if [ "$dosfdisk" == "yes" ]; then + devices=`LC_ALL=C $SFDISK -l 2>/dev/null | grep "^Disk /dev" | @AWK@ '{print $2}' | cut -d: -f1` if [ "$devices" == "" ]; then warning "No harddisks found" fi for dev in $devices; do + debug "$SFDISK will try to backup partition tables for device $dev" [ -b $dev ] || continue label=${dev#/dev/} label=${label//\//-} outputfile=${partitionsfile//__star__/$label} - debug "$SFDISK $sfdisk_options -d $dev > $outputfile" - $SFDISK $sfdisk_options -d $dev > $outputfile - done -fi - -## HARDWARE ############################# - -# -# here we use hwinfo to dump a table listing all the -# information we can find on the hardware of this machine -# - -if [ "$hardware" == "yes" ]; then - if [ -f $hardwarefile ]; then - rm $hardwarefile - fi - touch $hardwarefile - echo -e "\n\n====================== summary ======================\n" >> $hardwarefile - debug "$HWINFO --short --cpu --network --disk --pci >> $hardwarefile" - $HWINFO --short --cpu --network --disk --pci >> $hardwarefile - for flag in cpu network disk bios pci; do - echo -e "\n\n====================== $flag ======================\n" >> $hardwarefile - $HWINFO --$flag >> $hardwarefile + debug "$SFDISK $sfdisk_options -d $dev > $outputfile 2>/dev/null" + $SFDISK $sfdisk_options -d $dev > $outputfile 2>/dev/null + if [ $? -ne 0 ]; then + warning "The partition table for $dev could not be saved." + fi done + fi + if [ "$dohwinfo" == "yes" ]; then + debug "Using $HWINFO to get all available disk information" + echo -e "\n\n====================== $disk ======================\n" >> $hardwarefile + $HWINFO --disk >> $hardwarefile + fi fi