Style changes and improved detection of Red Hat based clones

This commit is contained in:
Michael Boelen 2016-09-27 11:20:35 +02:00
parent 9caf3005b5
commit f0cfab3f04

View File

@ -27,155 +27,158 @@
# IBM AIX # IBM AIX
AIX) AIX)
OS="AIX" OS="AIX"
OS_NAME="AIX" OS_NAME="AIX"
OS_VERSION=$(oslevel) OS_VERSION=$(oslevel)
OS_FULLNAME="AIX ${OS_VERSION}" OS_FULLNAME="AIX ${OS_VERSION}"
CPU=$(uname -p) CPU=$(uname -p)
HARDWARE=$(uname -M) HARDWARE=$(uname -M)
FIND_BINARIES="whereis -b" FIND_BINARIES="whereis -b"
SYSCTL_READKEY="" SYSCTL_READKEY=""
;; ;;
# Mac OS X # Mac OS X and macOS
Darwin) Darwin)
OS="MacOS" OS="MacOS"
if [ -x /usr/bin/sw_vers ]; then if [ -x /usr/bin/sw_vers ]; then
OS_NAME=$(/usr/bin/sw_vers -productName) OS_NAME=$(/usr/bin/sw_vers -productName)
OS_VERSION=$(/usr/bin/sw_vers -productVersion) OS_VERSION=$(/usr/bin/sw_vers -productVersion)
OS_FULLNAME="${OS_NAME} ${OS_VERSION}" OS_FULLNAME="${OS_NAME} ${OS_VERSION}"
else else
# Fall back to pretty safe name # Fall back to a fairly safe name
OS_NAME="Mac OS X" OS_NAME="Mac OS X"
OS_FULLNAME=$(uname -s -r) OS_FULLNAME=$(uname -s -r)
OS_VERSION=$(uname -r) OS_VERSION=$(uname -r)
fi fi
HARDWARE=$(uname -m) HARDWARE=$(uname -m)
HOMEDIRS="/Users" HOMEDIRS="/Users"
FIND_BINARIES="whereis" FIND_BINARIES="whereis"
OS_KERNELVERSION=$(uname -r) OS_KERNELVERSION=$(uname -r)
SYSCTL_READKEY="" SYSCTL_READKEY=""
;; ;;
# DragonFly BSD # DragonFly BSD
DragonFly) DragonFly)
OS="DragonFly" OS="DragonFly"
OS_NAME="DragonFly BSD" OS_NAME="DragonFly BSD"
OS_FULLNAME=$(uname -s -r) OS_FULLNAME=$(uname -s -r)
OS_VERSION=$(uname -r) OS_VERSION=$(uname -r)
HARDWARE=$(uname -m) HARDWARE=$(uname -m)
HOMEDIRS="/home /root" HOMEDIRS="/home /root"
FIND_BINARIES="whereis -q -a -b" FIND_BINARIES="whereis -q -a -b"
OS_KERNELVERSION=$(uname -i) OS_KERNELVERSION=$(uname -i)
SYSCTL_READKEY="sysctl -n" SYSCTL_READKEY="sysctl -n"
;; ;;
# FreeBSD # FreeBSD
FreeBSD) FreeBSD)
OS="FreeBSD" OS="FreeBSD"
OS_NAME="FreeBSD" OS_NAME="FreeBSD"
OS_FULLNAME=$(uname -s -r) OS_FULLNAME=$(uname -s -r)
OS_VERSION=$(uname -r) OS_VERSION=$(uname -r)
HARDWARE=$(uname -m) HARDWARE=$(uname -m)
HOMEDIRS="/home /root" HOMEDIRS="/home /root"
FIND_BINARIES="whereis -q -a -b" FIND_BINARIES="whereis -q -a -b"
OS_KERNELVERSION=$(uname -i) OS_KERNELVERSION=$(uname -i)
SYSCTL_READKEY="sysctl -n" SYSCTL_READKEY="sysctl -n"
# TrueOS # TrueOS
if [ -f /etc/defaults/trueos ]; then if [ -f /etc/defaults/trueos ]; then
OS_NAME="TrueOS" OS_NAME="TrueOS"
LogText "Result: found TrueOS file, system is completely based on FreeBSD though. Only adjusting OS name." LogText "Result: found TrueOS file, system is completely based on FreeBSD though. Only adjusting OS name."
fi fi
;; ;;
# HP-UX # HP-UX
HP-UX) HP-UX)
OS="HP-UX" OS="HP-UX"
OS_NAME="HP-UX" OS_NAME="HP-UX"
OS_FULLNAME=$(uname -s -r) OS_FULLNAME=$(uname -s -r)
OS_VERSION=$(uname -r) OS_VERSION=$(uname -r)
HARDWARE=$(uname -m) HARDWARE=$(uname -m)
FIND_BINARIES="whereis -b" FIND_BINARIES="whereis -b"
SYSCTL_READKEY="" SYSCTL_READKEY=""
;; ;;
# Linux # Linux
Linux) Linux)
OS="Linux" OS="Linux"
OS_NAME="Linux" OS_NAME="Linux"
OS_FULLNAME="" OS_FULLNAME=""
OS_VERSION=$(uname -r) OS_VERSION=$(uname -r)
LINUX_VERSION="" LINUX_VERSION=""
HARDWARE=$(uname -m) HARDWARE=$(uname -m)
HOMEDIRS="/home" HOMEDIRS="/home"
FIND_BINARIES="whereis -b" FIND_BINARIES="whereis -b"
OS_KERNELVERSION_FULL=$(uname -r) OS_KERNELVERSION_FULL=$(uname -r)
OS_KERNELVERSION=$(echo ${OS_KERNELVERSION_FULL} | sed 's/-.*//') OS_KERNELVERSION=$(echo ${OS_KERNELVERSION_FULL} | sed 's/-.*//')
if [ -e /dev/grsec ]; then GRSEC_FOUND=1; fi if [ -e /dev/grsec ]; then GRSEC_FOUND=1; fi
# Amazon # Amazon
if [ -e "/etc/system-release" ]; then if [ -e "/etc/system-release" ]; then
FIND=$(grep "Amazon" /etc/system-release) FIND=$(grep "Amazon" /etc/system-release)
if [ ! "${FIND}" = "" ]; then if [ ! "${FIND}" = "" ]; then
OS_REDHAT_OR_CLONE=1 OS_REDHAT_OR_CLONE=1
OS_FULLNAME=$(grep "^Amazon" /etc/system-release) OS_FULLNAME=$(grep "^Amazon" /etc/system-release)
OS_VERSION=$(grep "^Amazon" /etc/system-release | awk '{ if ($4=="release") { print $5 } }') OS_VERSION=$(grep "^Amazon" /etc/system-release | awk '{ if ($4=="release") { print $5 } }')
LINUX_VERSION="Amazon" LINUX_VERSION="Amazon"
fi fi
fi fi
# Arch Linux # Arch Linux
if [ -e "/etc/arch-release" ]; then if [ -e "/etc/arch-release" ]; then
OS_FULLNAME="Arch Linux" OS_FULLNAME="Arch Linux"
OS_VERSION="Unknown" OS_VERSION="Unknown"
LINUX_VERSION="Arch Linux" LINUX_VERSION="Arch Linux"
fi fi
# Chakra Linux # Chakra Linux
if [ -e "/etc/chakra-release" ]; then if [ -e "/etc/chakra-release" ]; then
OS_FULLNAME=$(grep "^Chakra" /etc/chakra-release) OS_FULLNAME=$(grep "^Chakra" /etc/chakra-release)
OS_VERSION=$(awk '/^Chakra/ { if ($3=="release") { print $4 }}' /etc/chakra-release) OS_VERSION=$(awk '/^Chakra/ { if ($3=="release") { print $4 }}' /etc/chakra-release)
LINUX_VERSION="Chakra Linux" LINUX_VERSION="Chakra Linux"
fi fi
# Cobalt # Cobalt
if [ -e "/etc/cobalt-release" ]; then OS_FULLNAME=$(cat /etc/cobalt-release); fi if [ -e "/etc/cobalt-release" ]; then OS_FULLNAME=$(cat /etc/cobalt-release); fi
# CPUBuilders Linux # CPUBuilders Linux
if [ -e "/etc/cpub-release" ]; then OS_FULLNAME=$(cat /etc/cpub-release); fi if [ -e "/etc/cpub-release" ]; then OS_FULLNAME=$(cat /etc/cpub-release); fi
# Debian/Ubuntu (***) - Set first to Debian # Debian/Ubuntu (***) - Set first to Debian
if [ -e "/etc/debian_version" ]; then if [ -e "/etc/debian_version" ]; then
OS_VERSION=$(cat /etc/debian_version) OS_VERSION=$(cat /etc/debian_version)
OS_FULLNAME="Debian ${OS_VERSION}" OS_FULLNAME="Debian ${OS_VERSION}"
LINUX_VERSION="Debian" LINUX_VERSION="Debian"
fi fi
# /etc/lsb-release does not exist on Debian
if [ -e "/etc/debian_version" -a -e /etc/lsb-release ]; then # /etc/lsb-release does not exist on Debian
if [ -e "/etc/debian_version" -a -e /etc/lsb-release ]; then
OS_VERSION=$(cat /etc/debian_version) OS_VERSION=$(cat /etc/debian_version)
FIND=$(grep "^DISTRIB_ID=" /etc/lsb-release | cut -d '=' -f2 | sed 's/"//g') FIND=$(grep "^DISTRIB_ID=" /etc/lsb-release | cut -d '=' -f2 | sed 's/"//g')
if [ "${FIND}" = "Ubuntu" ]; then if [ "${FIND}" = "Ubuntu" ]; then
OS_VERSION=$(grep "^DISTRIB_RELEASE=" /etc/lsb-release | cut -d '=' -f2) OS_VERSION=$(grep "^DISTRIB_RELEASE=" /etc/lsb-release | cut -d '=' -f2)
OS_FULLNAME="Ubuntu ${OS_VERSION}" OS_FULLNAME="Ubuntu ${OS_VERSION}"
LINUX_VERSION="Ubuntu" LINUX_VERSION="Ubuntu"
elif [ "${FIND}" = "elementary OS" ]; then elif [ "${FIND}" = "elementary OS" ]; then
LINUX_VERSION="elementary OS" LINUX_VERSION="elementary OS"
OS_VERSION=$(grep "^DISTRIB_RELEASE=" /etc/lsb-release | cut -d '=' -f2) OS_VERSION=$(grep "^DISTRIB_RELEASE=" /etc/lsb-release | cut -d '=' -f2)
OS_FULLNAME=$(grep "^DISTRIB_DESCRIPTION=" /etc/lsb-release | cut -d '=' -f2 | sed 's/"//g') OS_FULLNAME=$(grep "^DISTRIB_DESCRIPTION=" /etc/lsb-release | cut -d '=' -f2 | sed 's/"//g')
else else
# Catch all, in case it's unclear what specific release this is. # Catch all, in case it's unclear what specific release this is.
OS_FULLNAME="Debian ${OS_VERSION}" OS_FULLNAME="Debian ${OS_VERSION}"
LINUX_VERSION="Debian" LINUX_VERSION="Debian"
fi fi
# Ubuntu test (optional) $(grep "[Uu]buntu" /proc/version) # Ubuntu test (optional) $(grep "[Uu]buntu" /proc/version)
fi fi
# E-smith
if [ -e "/etc/e-smith-release" ]; then OS_FULLNAME=$(cat /etc/e-smith-release); fi
# Gentoo
if [ -e "/etc/gentoo-release" ]; then LINUX_VERSION="Gentoo"; OS_FULLNAME=$(cat /etc/gentoo-release); fi
# Red Hat and others # E-smith
if [ -e "/etc/redhat-release" ]; then if [ -e "/etc/e-smith-release" ]; then OS_FULLNAME=$(cat /etc/e-smith-release); fi
# Gentoo
if [ -e "/etc/gentoo-release" ]; then LINUX_VERSION="Gentoo"; OS_FULLNAME=$(cat /etc/gentoo-release); fi
# Red Hat and others
if [ -e "/etc/redhat-release" ]; then
OS_REDHAT_OR_CLONE=1 OS_REDHAT_OR_CLONE=1
# CentOS # CentOS
@ -238,125 +241,126 @@
fi fi
fi fi
# Red Hat
FIND=$(grep "Red Hat" /etc/redhat-release)
if [ ! "${FIND}" = "" ]; then
OS_FULLNAME=$(grep "Red Hat" /etc/redhat-release)
OS_VERSION="${OS_FULLNAME}"
LINUX_VERSION="Red Hat"
fi
# Scientific # Scientific
FIND=$(grep "Scientific" /etc/redhat-release) FIND=$(grep "Scientific" /etc/redhat-release)
if [ ! "${FIND}" = "" ]; then if [ ! "${FIND}" = "" ]; then
OS_FULLNAME=$(grep "^Scientific" /etc/redhat-release) OS_FULLNAME=$(grep "^Scientific" /etc/redhat-release)
OS_VERSION=$(grep "^Scientific" /etc/redhat-release | awk '{ if ($3=="release") { print $4 } }') OS_VERSION=$(grep "^Scientific" /etc/redhat-release | awk '{ if ($3=="release") { print $4 } }')
LINUX_VERSION="Scientific" LINUX_VERSION="Scientific"
fi fi
fi if [ -z "${LINUX_VERSION}" ]; then
# Red Hat
FIND=$(grep "Red Hat" /etc/redhat-release)
if [ ! "${FIND}" = "" ]; then
OS_FULLNAME=$(grep "Red Hat" /etc/redhat-release)
OS_VERSION="${OS_FULLNAME}"
LINUX_VERSION="Red Hat"
fi
fi
# PCLinuxOS fi
if [ -f /etc/pclinuxos-release ]; then
FIND=$(grep "^PCLinuxOS" /etc/pclinuxos-release)
if [ ! "${FIND}" = "" ]; then
OS_FULLNAME="PCLinuxOS Linux"
LINUX_VERSION="PCLinuxOS"
OS_VERSION=$(grep "^PCLinuxOS" /etc/pclinuxos-release | awk '{ if ($2=="release") { print $3 } }')
fi
fi
# Sabayon Linux # PCLinuxOS
if [ -f /etc/sabayon-edition ]; then if [ -f /etc/pclinuxos-release ]; then
FIND=$(grep "Sabayon Linux" /etc/sabayon-edition) FIND=$(grep "^PCLinuxOS" /etc/pclinuxos-release)
if [ ! "${FIND}" = "" ]; then if [ ! "${FIND}" = "" ]; then
OS_FULLNAME="Sabayon Linux" OS_FULLNAME="PCLinuxOS Linux"
LINUX_VERSION="Sabayon" LINUX_VERSION="PCLinuxOS"
OS_VERSION=$(awk '{ print $3 }' /etc/sabayon-edition) OS_VERSION=$(grep "^PCLinuxOS" /etc/pclinuxos-release | awk '{ if ($2=="release") { print $3 } }')
fi fi
fi fi
if [ -f /etc/SLOX-release ]; then # Sabayon Linux
OS_FULLNAME=$(grep "SuSE Linux" /etc/SLOX-release) if [ -f /etc/sabayon-edition ]; then
LINUX_VERSION="SuSE" FIND=$(grep "Sabayon Linux" /etc/sabayon-edition)
fi if [ ! "${FIND}" = "" ]; then
OS_FULLNAME="Sabayon Linux"
LINUX_VERSION="Sabayon"
OS_VERSION=$(awk '{ print $3 }' /etc/sabayon-edition)
fi
fi
# Slackware if [ -f /etc/SLOX-release ]; then
if [ -f /etc/slackware-version ]; then OS_FULLNAME=$(grep "SuSE Linux" /etc/SLOX-release)
LINUX_VERSION="Slackware" LINUX_VERSION="SuSE"
OS_VERSION=$(grep "^Slackware" /etc/slackware-version | awk '{ if ($1=="Slackware") { print $2 } }') fi
OS_FULLNAME="Slackware Linux ${OS_VERSION}"
fi
# SuSE # Slackware
if [ -e "/etc/SuSE-release" ]; then if [ -f /etc/slackware-version ]; then
OS_VERSION=$(head -n 1 /etc/SuSE-release) LINUX_VERSION="Slackware"
LINUX_VERSION="SuSE" OS_VERSION=$(grep "^Slackware" /etc/slackware-version | awk '{ if ($1=="Slackware") { print $2 } }')
fi OS_FULLNAME="Slackware Linux ${OS_VERSION}"
fi
# Turbo Linux # SuSE
if [ -e "/etc/turbolinux-release" ]; then OS_FULLNAME=$(cat /etc/turbolinux-release); fi if [ -e "/etc/SuSE-release" ]; then
OS_VERSION=$(head -n 1 /etc/SuSE-release)
LINUX_VERSION="SuSE"
fi
# YellowDog # Turbo Linux
if [ -e "/etc/yellowdog-release" ]; then OS_FULLNAME=$(cat /etc/yellowdog-release); fi if [ -e "/etc/turbolinux-release" ]; then OS_FULLNAME=$(cat /etc/turbolinux-release); fi
# VMware # YellowDog
if [ -e "/etc/vmware-release" ]; then if [ -e "/etc/yellowdog-release" ]; then OS_FULLNAME=$(cat /etc/yellowdog-release); fi
OS_FULLNAME=$(cat /etc/vmware-release)
OS_VERSION=$(uname -r)
IS_VMWARE_ESXI=$(vmware -vl | grep VMware ESXi)
if [ ! "${IS_VMWARE_ESXI}" = "" ]; then
OS_FULLNAME="VMware ESXi ${OS_VERSION}"
fi
fi
# =================================================================== # VMware
# Set OS name to the discovered Linux version if [ -e "/etc/vmware-release" ]; then
if [ ! "${LINUX_VERSION}" = "" -a "${OS_NAME}" = "Linux" ]; then OS_FULLNAME=$(cat /etc/vmware-release)
OS_NAME="${LINUX_VERSION}" OS_VERSION=$(uname -r)
fi IS_VMWARE_ESXI=$(vmware -vl | grep VMware ESXi)
# If Linux version (full name) is unknown, use uname value if [ ! "${IS_VMWARE_ESXI}" = "" ]; then
if [ "${OS_FULLNAME}" = "" ]; then OS_FULLNAME=$(uname -s -r); fi OS_FULLNAME="VMware ESXi ${OS_VERSION}"
SYSCTL_READKEY="sysctl -n" fi
fi
# ===================================================================
# Set OS name to the discovered Linux version
if [ ! "${LINUX_VERSION}" = "" -a "${OS_NAME}" = "Linux" ]; then
OS_NAME="${LINUX_VERSION}"
fi
# If Linux version (full name) is unknown, use uname value
if [ "${OS_FULLNAME}" = "" ]; then OS_FULLNAME=$(uname -s -r); fi
SYSCTL_READKEY="sysctl -n"
;; ;;
# NetBSD # NetBSD
NetBSD) NetBSD)
OS="NetBSD" OS="NetBSD"
OS_NAME="NetBSD" OS_NAME="NetBSD"
OS_FULLNAME=$(uname -s -r) OS_FULLNAME=$(uname -s -r)
OS_KERNELVERSION=$(uname -v) OS_KERNELVERSION=$(uname -v)
OS_VERSION=$(uname -r) OS_VERSION=$(uname -r)
HARDWARE=$(uname -m) HARDWARE=$(uname -m)
FIND_BINARIES="whereis" FIND_BINARIES="whereis"
SYSCTL_READKEY="" SYSCTL_READKEY=""
;; ;;
# OpenBSD # OpenBSD
OpenBSD) OpenBSD)
OS="OpenBSD" OS="OpenBSD"
OS_NAME="OpenBSD" OS_NAME="OpenBSD"
OS_FULLNAME=$(uname -s -r) OS_FULLNAME=$(uname -s -r)
OS_KERNELVERSION=$(uname -v) OS_KERNELVERSION=$(uname -v)
OS_VERSION=$(uname -r) OS_VERSION=$(uname -r)
HARDWARE=$(uname -m) HARDWARE=$(uname -m)
FIND_BINARIES="whereis" FIND_BINARIES="whereis"
SYSCTL_READKEY="" SYSCTL_READKEY=""
;; ;;
# Solaris / OpenSolaris # Solaris / OpenSolaris
SunOS) SunOS)
OS="Solaris" OS="Solaris"
OS_NAME="Sun Solaris" OS_NAME="Sun Solaris"
OS_FULLNAME=$(uname -s -r) OS_FULLNAME=$(uname -s -r)
OS_VERSION=$(uname -r) OS_VERSION=$(uname -r)
HARDWARE=$(uname -m) HARDWARE=$(uname -m)
if [ -x /usr/bin/isainfo ]; then if [ -x /usr/bin/isainfo ]; then
# Returns 32, 64 # Returns 32, 64
OS_MODE=$(/usr/bin/isainfo -b) OS_MODE=$(/usr/bin/isainfo -b)
fi fi
SYSCTL_READKEY="" SYSCTL_READKEY=""
;; ;;
# VMware products # VMware products
@ -382,10 +386,10 @@
# Unknown or unsupported systems # Unknown or unsupported systems
*) *)
echo "[ ${WARNING}WARNING${NORMAL} ]" echo "[ ${WARNING}WARNING${NORMAL} ]"
echo "${WARNING}Error${NORMAL}: ${WHITE}Unknown OS found. No support available yet for this OS or platform...${NORMAL}" echo "${WARNING}Error${NORMAL}: ${WHITE}Unknown OS found. No support available yet for this OS or platform...${NORMAL}"
echo "Please consult the README/documentation for more information." echo "Please consult the README/documentation for more information."
exit 1 exit 1
;; ;;
esac esac
@ -394,19 +398,19 @@
ECHONB="" ECHONB=""
case ${OS} in case ${OS} in
"AIX") ECHOCMD="echo" ;; "AIX") ECHOCMD="echo" ;;
"DragonFly"|"FreeBSD"|"NetBSD") ECHOCMD="echo -e"; ECHONB="echo -n" ;; "DragonFly"|"FreeBSD"|"NetBSD") ECHOCMD="echo -e"; ECHONB="echo -n" ;;
"MacOS") ECHOCMD="echo"; ECHONB="echo -n" ;; "MacOS") ECHOCMD="echo"; ECHONB="echo -n" ;;
"Solaris") ECHOCMD="echo" ;; "Solaris") ECHOCMD="echo" ;;
"Linux") "Linux")
# Check if dash is used (Debian/Ubuntu) # Check if dash is used (Debian/Ubuntu)
DEFAULT_SHELL=$(ls -l /bin/sh | awk -F'>' '{print $2}') DEFAULT_SHELL=$(ls -l /bin/sh | awk -F'>' '{print $2}')
case ${DEFAULT_SHELL} in case ${DEFAULT_SHELL} in
" dash") ECHOCMD="/bin/echo -e" ;; " dash") ECHOCMD="/bin/echo -e" ;;
*) ECHOCMD="echo -e" ;; *) ECHOCMD="echo -e" ;;
esac esac
;; ;;
*) ECHOCMD="echo -e" ;; *) ECHOCMD="echo -e" ;;
esac esac
# Check if we have full featured commands, or are using BusyBox as a shell # Check if we have full featured commands, or are using BusyBox as a shell