#!/bin/bash
#
# send_minisysinfo erzeugt Minimale Infos zur Neuinstallation eines Servers
###########################################################################
#
if [[ $# -lt 2 ]]
 then
  DT="`date '+%Y-%m-%d %H:%M:00%:z'`"
else
  DT="$1 $2"
fi
#
if which xz &>/dev/null
 then
  COMPRESS=xz
  EXT=xz
else
  COMPRESS=bzip2
  EXT=bz2
fi
#
OUTFILE=/tmp/minisysinfo-`hostname`.txt
#
# fdisk
echo '# Fdisk' >$OUTFILE
echo '#-------------------------------------------------------------------------' >>$OUTFILE
fdisk -l $(sed -n 's| *[0-9].* \([a-z]*\)$|/dev/\1|p' /proc/partitions) >>$OUTFILE 2>/dev/null
echo '##########################################################################' >>$OUTFILE
#
#
# /etc/fstab
echo >>$OUTFILE
echo '# /etc/fstab' >>$OUTFILE
echo '#-------------------------------------------------------------------------' >>$OUTFILE
cat /etc/fstab >>$OUTFILE
echo '##########################################################################' >>$OUTFILE
#
# LVM
if which pvs &>/dev/null && grep -q '^ *253 ' /proc/partitions
 then
  echo >>$OUTFILE
  echo '# pvs' >>$OUTFILE
  echo '#-------------------------------------------------------------------------' >>$OUTFILE
  pvs 2>/dev/null >>$OUTFILE
  echo '##########################################################################' >>$OUTFILE
  echo >>$OUTFILE
  echo '# vgs' >>$OUTFILE
  echo '#-------------------------------------------------------------------------' >>$OUTFILE
  vgs 2>/dev/null >>$OUTFILE
  echo '##########################################################################' >>$OUTFILE
  echo >>$OUTFILE
  echo '# lvs' >>$OUTFILE
  echo '#-------------------------------------------------------------------------' >>$OUTFILE
  lvs 2>/dev/null >>$OUTFILE
  echo '##########################################################################' >>$OUTFILE
  echo >>$OUTFILE
  echo '# vgdisplay -v' >>$OUTFILE
  echo '#-------------------------------------------------------------------------' >>$OUTFILE
  vgdisplay -v 2>/dev/null >>$OUTFILE
  echo '##########################################################################' >>$OUTFILE
  echo >>$OUTFILE
  echo '# lvdisplay -m' >>$OUTFILE
  echo '#-------------------------------------------------------------------------' >>$OUTFILE
  lvdisplay -m 2>/dev/null >>$OUTFILE
  echo '##########################################################################' >>$OUTFILE
fi
#
# multipath
if lsmod | fgrep -q multipath && which multipath &>/dev/null
 then
  echo >>$OUTFILE
  echo '# multipath -ll' >>$OUTFILE
  echo '#-------------------------------------------------------------------------' >>$OUTFILE
  multipath -ll >>$OUTFILE
  echo '##########################################################################' >>$OUTFILE
fi
#
# btrfs Subvolumes
if which btrfs &>/dev/null
 then
  echo >>$OUTFILE
  echo '# btrfs subvolumes' >>$OUTFILE
  echo '#-------------------------------------------------------------------------' >>$OUTFILE
  mount | awk '/^\/dev.* type btrfs/ {if(!a[$1]){print $1, $3;a[$1]=1}}' | while read d m
   do
    echo "Subvolumes of btrfs volume $m ($d)"
    btrfs subvolume list $m
    echo
  done >>$OUTFILE
  echo '##########################################################################' >>$OUTFILE
fi
if [[ -f $OUTFILE ]]
 then
  rm -f $OUTFILE.$EXT 2>/dev/null
  if $COMPRESS $OUTFILE
   then
    send_server_doku MiniSystemInfo "Mini System Info mit Disk Konfiguration." $DT $OUTFILE.$EXT
  fi
fi
