#!/bin/bash
#
# Simply lazy written Systemreport
# Copyright Daniel Mehrmann (Akusari) 2024
#

#
# Configuration
#
status="$1"
parameter=""
report="/tmp/report.$$"
maxsize=1024768

#
# Conditions
#
if [ -z "$1" ]; then
   {
      echo "";
      echo "WARNING:  $(basename "$0") needs a parameter!";
      echo "";
   } >> $report
fi

if [ "$1" == "system" ]; then
   parameter="--since=-12hours"
   headline="System report"
else
   headline="Boot report"
fi

#
# Create report
#
{
   echo "*********************************************";
   echo "Generating ${headline}...";
   echo "*********************************************";
   echo "";
   echo "Date: $(date)";
   echo "";
   echo "*********************************************";
   echo "";
   echo "systemd:";
   /usr/bin/systemctl --failed;
   echo "";
   echo "*********************************************";
} >> $report


#
# Audit report 
#   
if [[ -f /usr/bin/aureport && -f /var/log/audit/audit.log ]]; then
   {
      echo "";
      echo "Audit report:";
      /usr/bin/aureport --failed;
   } >> $report
fi

#
# Systemd journal
#
{
   echo "";
   echo "*********************************************";
   echo "Systemd:";
   echo "systemd-journal: $(journalctl -p 3 -x -b ${parameter})";
   echo "";
   echo "*********************************************";
} >> $report

#
# Kernel
#
{
  echo "";
  echo "********************";
  echo "Critical kermel msg:";
  echo "systemd-journal: $(journalctl -b -t kernel ${parameter} |grep -i segfault)";
  echo "";
  echo "********************";
} >> $report

#
# SSHD
#
if [ "$1" == "system" ]; then
   {
      echo "";
      echo "Sshd messages:";
      /usr/bin/journalctl -b -u sshd ${parameter};
      echo "*********************************************";
   }  >> $report
fi

#
# Send report
#

# Check file size
filesize=$(stat -c%s "${report}")

if ((filesize > maxsize)); then 
  gzip -c $report > ${report}.gz && echo "See attachment for details" |mail -Ssendwait -s "$(hostname) ${headline}" -a ${report}.gz root@localhost
  rm ${report}.gz
else
  cat $report | mail -Ssendwait -s "$(hostname) ${headline}" root@localhost
fi

rm $report
