#!/usr/bin/env bash
# Shell script which prints short information about OS such as:
# Hostname, OS version, Kernel version, Processor/CPU, Total RAM,
# System load, network interface, total logged in users, Hard disks,
# Runlevel, etc.
# To report a bug please send to https://sf.net/projects/sysmon/support
# Rewriten for modern version of Linux and FreeBSD by Falcony for the fidoip project (https://sf.net/projects/fidoip/)
# Added support for NetBSD, DragonFly BSD, OpenBSD and Windows (msys2 and cygwin), created manual page and readme.
# Copyright (c) 2025 by Falcony.
# This script was initally licensed under GNU GPL version 2.0 or above
# Some code of this script intitally written by Vivek G for nixCraft project:
# Copyright (c) 2005 nixCraft project
# https://bash.cyberciti.biz/monitoring/freebsd-linux-system-information
# -------------------------------------------------------------------------
CWD=$(pwd)
if [[ "${0:0:1}" != "/" ]]; then
SYSMON=$(echo $0 | sed "s|sysmon||")
SYSMONCWD=$(echo "$CWD"/"$SYSMON")
else
SYSMONCWD=$(echo $0 | sed "s|sysmon||")
fi

usage() {
    man sysmon 2>/dev/null || man $SYSMONCWD/sysmon.1 2>/dev/null || man $SYSMONCWD/sysmon.1.gz 2>/dev/null || man ../share/man/man1/sysmon.1 2>/dev/null  || man ../share/man/man1/sysmon.1.gz 2>/dev/null  
    exit 0
}

while getopts ":hdlp" opt; do
    case $opt in
        h) usage     ;;
          *) usage ;;
    esac
done

SPATH="$SYSMONCWD/paths.sysmon"
INITBMS="$SYSMONCWD/functions.sysmon"
[ ! -f $SPATH ] && exit 1 || . $SPATH
[ ! -f $INITBMS ] && exit 1 || . $INITBMS 

echo "Date & Time:" $($DATE)
echo "OS Name:" $(getOs)
echo "OS Version:" $(getOsVersion)
echo "Hostname:" $(getHostName)
echo "Number of packages/apps:" $(getNumberOfPackages)
#echo "Processor Type:" $(getCpuInfo)
echo "Number of Processors:" $(getCpuNumbers)
echo "Processor Name:" $(getCpuName)
echo "Physical Memory (RAM):" $(getRamInfo)
echo "Swap's Info:" $(getSwapCurrentUsage)
echo "Network interfaces:" $(getNumberOfInterfaces)
echo "Current processes:" $(getNumberOfRunningProcess)
echo "Total SCSI/IDE/USB disks:" $(getDiskDrives)
echo "Mounted partitions:" $(getNumberOfPartions)
echo "Used % of partitions space:" $(getSizeOfPartions)
echo "Current uptime:" $(getCurrentUptime)
echo "Logged in users:" $(getInUsersInfo)


