#!/bin/sh
# Before running this script please ensure that your PATH is
# typical as you use for compilation/istallation. I use
# /bin /sbin /usr/bin /usr/sbin /usr/local/bin, but it may
# differ on your system.

PATH=/sbin:/usr/sbin:/bin:/usr/bin:$PATH

tst_cmd_available()
{
	if type command > /dev/null 2>&1; then
		command -v $1 > /dev/null 2>&1 || return 1
	else
		which $1 > /dev/null 2>&1
		if [ $? -eq 0 ]; then
			return 0
		else
			return 1
		fi
	fi
}

tst_cmd_run()
{
	local cmd="$1"
	shift
	tst_cmd_available $cmd && eval "$cmd $@"
}

is_enabled()
{
	[ -f "$1" ] && [ "$(cat $1)" = "Y" -o "$(cat $1)" = "1" ]
}

echo 'If some fields are empty or look unusual you may have an old version.'
echo 'Compare to the current minimal requirements in Documentation/Changes.'

echo
echo "`ls /etc/*release 2> /dev/null`"
cat /etc/*release 2> /dev/null
if [ $? = 1 ]; then
   echo "`ls /usr/lib/*release 2> /dev/null`"
   cat /usr/lib/*release 2> /dev/null
fi
if [ $? = 1 ]; then
   echo '/etc/issue:'
   cat /etc/issue 2> /dev/null
fi
if [ $? = 1 ]; then
	echo 'lsb_release -a'
	lsb_release -a 2> /dev/null
fi

echo
echo 'uname:'
uname -a

echo
echo '/proc/cmdline'
cat /proc/cmdline

echo

echo "Gnu C                 " `gcc --version 2>/dev/null | head -n 1`
echo "Clang                 " `clang --version 2>/dev/null | head -n 1`

make --version 2>&1 | awk -F, '{print $1}' | awk \
      '/GNU Make/{print "Gnu make              ",$NF}'

ld -v 2>&1 | awk -F\) '{print $1}' | awk \
      '/BFD/{print "binutils              ",$NF}'

fdformat --version 2>&1 | awk -F\- '{print "util-linux            ", $NF}'

mount --version 2>&1 | awk -F\- '{print "mount                 ", $NF}'

insmod -V  2>&1 | awk 'NR==1 {print "modutils              ",$NF}'

tune2fs 2>&1 | grep "^tune2fs" | sed 's/,//' |  awk \
'NR==1 {print "e2fsprogs             ", $2}'

reiserfsck 2>&1 | grep reiserfsprogs | awk \
'NR==1{print "reiserfsprogs         ", $NF}'

cardmgr -V 2>&1| grep version | awk \
'NR==1{print "pcmcia-cs             ", $3}'

pppd --version 2>&1| grep version | awk \
'NR==1{print "PPP                   ", $3}'

isdnctrl 2>&1 | grep version | awk \
'NR==1{print "isdn4k-utils          ", $NF}'

ls -l `ldd /bin/sh | awk '/libc/{print $3}'` | sed \
-e 's/\.so$//' | awk -F'[.-]'   '{print "Linux C Library        " \
$(NF-2)"."$(NF-1)"."$NF}'

ldd -v > /dev/null 2>&1 && ldd -v || ldd --version |head -n 1 | awk \
'NR==1{print "Dynamic linker (ldd)  ", $NF}'

ls -l /usr/lib/lib{g,stdc}++.so  2>/dev/null | awk -F. \
       '{print "Linux C++ Library      " $4"."$5"."$6}'

ps --version 2>&1 | awk 'NR==1{print "Procps                ", $NF}'

ifconfig --version 2>&1 | grep tools | awk \
'NR==1{print "Net-tools             ", $NF}'

ip -V 2>&1 | awk \
'NR==1{print "iproute2              ", $NF}'

ping -V 2>&1 | awk \
'NR==1{print "iputils               ", $NF}'

# Kbd needs 'loadkeys -h',
loadkeys -h 2>&1 | awk \
'(NR==1 && ($3 !~ /option/)) {print "Kbd                   ", $3}'

# while console-tools needs 'loadkeys -V'.
loadkeys -V 2>&1 | awk \
'(NR==1 && ($2 ~ /console-tools/)) {print "Console-tools         ", $3}'

expr --v 2>&1 | awk 'NR==1{print "Sh-utils              ", $NF}'

if [ -e /proc/modules ]; then
    X=`cat /proc/modules | sed -e "s/ .*$//"`
    echo "Modules Loaded         "$X
fi

echo
echo 'free reports:'
free

echo
echo 'cpuinfo:'
tst_cmd_run lscpu || cat /proc/cpuinfo

echo
if is_enabled /sys/module/apparmor/parameters/enabled; then
	echo 'AppArmor enabled'
	tst_cmd_run aa-status
else
	echo 'AppArmor disabled'
fi

echo

if ! tst_cmd_run sestatus; then
	printf 'SELinux mode: '
	tst_cmd_run getenforce || echo 'unknown'
fi
