#!/bin/bash

# ./lab6-check.bash

# Author:  Murray Saul
# Date:    June 27, 2016
# Edited by: Peter Callaghan
# Date: 18 Nov, 2021
# Edited by: Chris Johnson
# Date: July 22, 2021
#
# Purpose: 

# Function to indicate OK (in green) if check is true; otherwise, indicate
# WARNING (in red) if check is false and end with false exit status

logfile=$(getent passwd ${SUDO_USER:-$USER} | cut -d: -f6)/Desktop/lab6_output.txt

function check(){

  if eval $1
  then
     echo -e "\e[0;32mOK\e[m"
  else
     echo
     echo
     echo -e "\e[0;31mWARNING\e[m"
     echo
     echo
     echo $2
     echo
     exit 1
  fi

} # end of check() function

clear  # Clear the screen

cat <<+
ATTENTION:

In order to run this shell script, please
have the following information ready:

 - Your c7host and centos1, centos2, and centos3 VMs running.
   
 - Your centos1 username.
   You were instructed to have the IDENTICAL usernames
   and passwords for ALL of these Linux servers. If not
   login into each VM, switch to root, and use the commands:

   useradd -m [regular username]
   passwd [regular username]

   Before proceeding.

After reading the above steps, press ENTER to continue
+
read null
clear


# Make certain user is logged in as root
if [ $(whoami) != "root" ]
then
  echo "Note: You are required to run this program as root."
  exit 1
fi

# System information gathering
echo "OPS245 Lab 6 Check Script" > $logfile
echo | tee -a $logfile
echo "SYSTEM INFORMATION:" | tee -a $logfile
#echo "------------------------------------" | tee -a $logfile
hostnamectl | tee -a $logfile
echo -n "              Date: "  | tee -a $logfile
date | tee -a $logfile
echo | tee -a $logfile

# Start checking lab6
echo "CHECKING YOUR LAB 6 WORK:" | tee -a $logfile
echo | tee -a $logfile

# Check if c7host can ping 192.168.245.1
echo -n "Checking pinging 192.168.245.1 (c7host): " | tee -a $logfile
check "ping 192.168.245.1 -c 1 > /dev/null 2>&1" "This program could not ping itself. Please make fixes, and re-run this checking shell script." | tee -a $logfile

# Check if c7host can ping 192.168.245.11
echo -n "Checking pinging 192.168.245.11 (centos1): " | tee -a $logfile
check "ping 192.168.245.11 -c 1 > /dev/null 2>&1" "This program could not ping centos1. Please make appropriate corrections, and re-run this checking script." | tee -a $logfile

# Check if c7host can ping 192.168.245.12
echo -n "Check pinging 192.168.245.12 (centos2): " | tee -a $logfile
check "ping 192.168.245.12 -c 1 > /dev/null 2>&1" "This program could not ping centos2. Please make appropriate corrections, and re-run this checking script." | tee -a $logfile

# Check if c7host can ping 192.168.245.13
echo -n "Check pinging 192.168.245.13 (centos3): " | tee -a $logfile
check "ping 192.168.245.13 -c 1 > /dev/null 2>&1" "This program could not ping centos3. Please make appropriate corrections, and re-run this checking script." | tee -a $logfile

# Check for persistent setting on centos1
echo "Check for persistent setting on centos1: " | tee -a $logfile
read -p "Enter your username for centos1: " centos1UserName
check "ssh ${centos1UserName}@centos1 grep -isq 192.168.245.11 '/etc/sysconfig/network-scripts/ifcfg-e*'" "This program could find a correct address in the network interface file. Please make fixes, and re-run this checking shell script." | tee -a $logfile

# Check for persistent setting on centos2
echo "Check for persistent setting on centos2: " | tee -a $logfile
check "ssh ${centos1UserName}@centos2 grep -isq 192.168.245.12 '/etc/sysconfig/network-scripts/ifcfg-e*'" "This program could find a correct address in the netwrok interface file. Please make fixes, and re-run this checking shell script." | tee -a $logfile

# Check for persistent setting on centos3
echo "Check for persistent setting on centos3 (use password: \"ops245\"): " | tee -a $logfile
check "ssh ops245@centos3 grep -isq 192.168.245.13 '/etc/sysconfig/network-scripts/ifcfg-e*'" "This program could not find a correct address in the network interface file. Please make fixes, and re-run this checking shell script." | tee -a $logfile

# Check if can ping c7host name
echo -n "Checking pinging c7host: " | tee -a $logfile
check "ping c7host -c 1 > /dev/null 2>&1" "This program could not ping itself. Please make fixes, and re-run this checking shell script." | tee -a $logfile

# Check if can ping centos1 host name
echo -n "Checking pinging centos1: " | tee -a $logfile
check " ping centos1 -c 1 > /dev/null 2>&1" "This program could not ping centos1. Please make appropriate corrections, and re-run this checking script." | tee -a $logfile

# Check if can ping centos2 host name
echo -n "Check pinging centos2: " | tee -a $logfile
check "ping centos2 -c 1 > /dev/null 2>&1" "This program could not ping centos2. Please make appropriate corrections, and re-run this checking script." | tee -a $logfile

# Check if can ping centos3 host name
echo -n "Check pinging centos3: " | tee -a $logfile
check "ping centos3 -c 1 > /dev/null 2>&1" "This program could not ping centos3. Please make appropriate corrections, and re-run this checking script." | tee -a $logfile

# Check existence of netconfig.py script
echo -n "Checking existence of \"/home/$SUDO_USER/bin/netconfig.py\" script: " | tee -a $logfile
check "test -f /home/$SUDO_USER/bin/netconfig.py" "This program could not detect the pathname: \"/home/$SUDO_USER/bin/netconfig.py\". Please review Investigation 3 and successfully code the script /home/$SUDO_USER/bin/netconfig.py." | tee -a $logfile

warningcount=`grep -c "WARNING" $logfile`

echo | tee -a $logfile
echo | tee -a $logfile
if [ $warningcount == 0 ]
then
  echo "Congratulations!" | tee -a $logfile
  echo | tee -a $logfile
  echo "You have successfully completed Lab 6." | tee -a $logfile
  echo "1. Submit a screenshot of your entire desktop (including this window) to your course professor." | tee -a $logfile
  echo "2. A copy of this script output has been created at $logfile. Submit this file along with your screenshot." | tee -a $logfile
  echo "3. Also submit a copy of your netconfig.py script." | tee -a $logfile
  echo
else
  echo "Your Lab is not complete." | tee -a $logfile
  echo "Correct the warnings listed above, then run this script again." | tee -a $logfile
fi