#!/bin/bash
#
# send_sitar erzeugt mit sitar einen Systemstatus und
# sendet die sitar-<host>.html ans ULS
#######################################################
#
if [[ $# -lt 2 ]]
 then
  DT="`date '+%Y-%m-%d %H:%M:00%:z'`"
else
  DT="$1 $2"
fi
#
if which xz >/dev/null 2>&1
 then
  COMPRESS=xz
  EXT=xz
else
  COMPRESS=bzip2
  EXT=bz2
fi
#
# nach /tmp wechseln - Sitar legt im aktuellen Directory tmp-Dateien an.
cd /tmp
#
if [[ -x /usr/sbin/sitar ]]
 then
  OUTFILE=/tmp/sitar-`hostname`.html
  export USER=root
  /usr/sbin/sitar --format=html --outfile=$OUTFILE
  if [[ -f $OUTFILE ]]
   then
    rm $OUTFILE.$EXT
    if $COMPRESS $OUTFILE
     then
      send_server_doku Sitar "System Status mit sitar generiert." $DT $OUTFILE.$EXT
    fi
  fi
else
  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
  #
  # lsblk
  if which lsblk >/dev/null 2>&1
   then
    echo >>$OUTFILE
    echo '# lsblk' >>$OUTFILE
    echo '#-------------------------------------------------------------------------' >>$OUTFILE
    lsblk >>$OUTFILE
    echo '##########################################################################' >>$OUTFILE
  fi
  #
  # /etc/fstab
  echo >>$OUTFILE
  echo '# /etc/fstab' >>$OUTFILE
  echo '#-------------------------------------------------------------------------' >>$OUTFILE
  cat /etc/fstab >>$OUTFILE
  echo '##########################################################################' >>$OUTFILE
  #
  # LVM
  if grep -q '^ *253 ' /proc/partitions
   then
    echo >>$OUTFILE
    echo '# pvs' >>$OUTFILE
    echo '#-------------------------------------------------------------------------' >>$OUTFILE
    pvs >>$OUTFILE
    echo '##########################################################################' >>$OUTFILE
    echo >>$OUTFILE
    echo '# vgs' >>$OUTFILE
    echo '#-------------------------------------------------------------------------' >>$OUTFILE
    vgs >>$OUTFILE
    echo '##########################################################################' >>$OUTFILE
    echo >>$OUTFILE
    echo '# lvs' >>$OUTFILE
    echo '#-------------------------------------------------------------------------' >>$OUTFILE
    lvs >>$OUTFILE
    echo '##########################################################################' >>$OUTFILE
    echo >>$OUTFILE
    echo '# vgdisplay -v' >>$OUTFILE
    echo '#-------------------------------------------------------------------------' >>$OUTFILE
    vgdisplay -v >>$OUTFILE 2>/dev/null
    echo '##########################################################################' >>$OUTFILE
    echo >>$OUTFILE
    echo '# lvdisplay -m' >>$OUTFILE
    echo '#-------------------------------------------------------------------------' >>$OUTFILE
    lvdisplay -m >>$OUTFILE
    echo '##########################################################################' >>$OUTFILE
  fi
  #
  # multipath
  if lsmod | fgrep -q multipath
   then
    echo >>$OUTFILE
    echo '# multipath -ll' >>$OUTFILE
    echo '#-------------------------------------------------------------------------' >>$OUTFILE
    multipath -ll >>$OUTFILE
    echo '##########################################################################' >>$OUTFILE
  fi
  #
  # btrfs Subvolumes
  if which btrfs >/dev/null 2>&1
   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 $OUTFILE.$EXT 2>/dev/null
    if $COMPRESS $OUTFILE
     then
      send_server_doku MiniSystemInfo "Mini System Info mit Disk Konfiguration." $DT $OUTFILE.$EXT
    fi
  fi
fi
