diff options
author | Michael Boelen <michael.boelen@cisofy.com> | 2016-09-27 12:20:35 +0300 |
---|---|---|
committer | Michael Boelen <michael.boelen@cisofy.com> | 2016-09-27 12:20:35 +0300 |
commit | f0cfab3f04d2222d76ee0c340d57454e9c818818 (patch) | |
tree | f087af3ee0378060ad36fba4080e1c674d58e3bd | |
parent | 9caf3005b59ef14472204e79fae94414b15a6625 (diff) |
Style changes and improved detection of Red Hat based clones
-rw-r--r-- | include/osdetection | 466 |
1 files changed, 235 insertions, 231 deletions
diff --git a/include/osdetection b/include/osdetection index a94c1479..c65d602c 100644 --- a/include/osdetection +++ b/include/osdetection @@ -27,155 +27,158 @@ # IBM AIX AIX) - OS="AIX" - OS_NAME="AIX" - OS_VERSION=$(oslevel) - OS_FULLNAME="AIX ${OS_VERSION}" - CPU=$(uname -p) - HARDWARE=$(uname -M) - FIND_BINARIES="whereis -b" - SYSCTL_READKEY="" + OS="AIX" + OS_NAME="AIX" + OS_VERSION=$(oslevel) + OS_FULLNAME="AIX ${OS_VERSION}" + CPU=$(uname -p) + HARDWARE=$(uname -M) + FIND_BINARIES="whereis -b" + SYSCTL_READKEY="" ;; - # Mac OS X + # Mac OS X and macOS Darwin) - OS="MacOS" - if [ -x /usr/bin/sw_vers ]; then - OS_NAME=$(/usr/bin/sw_vers -productName) - OS_VERSION=$(/usr/bin/sw_vers -productVersion) - OS_FULLNAME="${OS_NAME} ${OS_VERSION}" + OS="MacOS" + if [ -x /usr/bin/sw_vers ]; then + OS_NAME=$(/usr/bin/sw_vers -productName) + OS_VERSION=$(/usr/bin/sw_vers -productVersion) + OS_FULLNAME="${OS_NAME} ${OS_VERSION}" else - # Fall back to pretty safe name - OS_NAME="Mac OS X" - OS_FULLNAME=$(uname -s -r) - OS_VERSION=$(uname -r) - fi - HARDWARE=$(uname -m) - HOMEDIRS="/Users" - FIND_BINARIES="whereis" - OS_KERNELVERSION=$(uname -r) - SYSCTL_READKEY="" + # Fall back to a fairly safe name + OS_NAME="Mac OS X" + OS_FULLNAME=$(uname -s -r) + OS_VERSION=$(uname -r) + fi + HARDWARE=$(uname -m) + HOMEDIRS="/Users" + FIND_BINARIES="whereis" + OS_KERNELVERSION=$(uname -r) + SYSCTL_READKEY="" ;; # DragonFly BSD DragonFly) - OS="DragonFly" - OS_NAME="DragonFly BSD" - OS_FULLNAME=$(uname -s -r) - OS_VERSION=$(uname -r) - HARDWARE=$(uname -m) - HOMEDIRS="/home /root" - FIND_BINARIES="whereis -q -a -b" - OS_KERNELVERSION=$(uname -i) - SYSCTL_READKEY="sysctl -n" + OS="DragonFly" + OS_NAME="DragonFly BSD" + OS_FULLNAME=$(uname -s -r) + OS_VERSION=$(uname -r) + HARDWARE=$(uname -m) + HOMEDIRS="/home /root" + FIND_BINARIES="whereis -q -a -b" + OS_KERNELVERSION=$(uname -i) + SYSCTL_READKEY="sysctl -n" ;; # FreeBSD FreeBSD) - OS="FreeBSD" - OS_NAME="FreeBSD" - OS_FULLNAME=$(uname -s -r) - OS_VERSION=$(uname -r) - HARDWARE=$(uname -m) - HOMEDIRS="/home /root" - FIND_BINARIES="whereis -q -a -b" - OS_KERNELVERSION=$(uname -i) - SYSCTL_READKEY="sysctl -n" - - # TrueOS - if [ -f /etc/defaults/trueos ]; then - OS_NAME="TrueOS" - LogText "Result: found TrueOS file, system is completely based on FreeBSD though. Only adjusting OS name." - fi + OS="FreeBSD" + OS_NAME="FreeBSD" + OS_FULLNAME=$(uname -s -r) + OS_VERSION=$(uname -r) + HARDWARE=$(uname -m) + HOMEDIRS="/home /root" + FIND_BINARIES="whereis -q -a -b" + OS_KERNELVERSION=$(uname -i) + SYSCTL_READKEY="sysctl -n" + + # TrueOS + if [ -f /etc/defaults/trueos ]; then + OS_NAME="TrueOS" + LogText "Result: found TrueOS file, system is completely based on FreeBSD though. Only adjusting OS name." + fi ;; # HP-UX HP-UX) - OS="HP-UX" - OS_NAME="HP-UX" - OS_FULLNAME=$(uname -s -r) - OS_VERSION=$(uname -r) - HARDWARE=$(uname -m) - FIND_BINARIES="whereis -b" - SYSCTL_READKEY="" + OS="HP-UX" + OS_NAME="HP-UX" + OS_FULLNAME=$(uname -s -r) + OS_VERSION=$(uname -r) + HARDWARE=$(uname -m) + FIND_BINARIES="whereis -b" + SYSCTL_READKEY="" ;; # Linux Linux) - OS="Linux" - OS_NAME="Linux" - OS_FULLNAME="" - OS_VERSION=$(uname -r) - LINUX_VERSION="" - HARDWARE=$(uname -m) - HOMEDIRS="/home" - FIND_BINARIES="whereis -b" - OS_KERNELVERSION_FULL=$(uname -r) - OS_KERNELVERSION=$(echo ${OS_KERNELVERSION_FULL} | sed 's/-.*//') - if [ -e /dev/grsec ]; then GRSEC_FOUND=1; fi - - # Amazon - if [ -e "/etc/system-release" ]; then - FIND=$(grep "Amazon" /etc/system-release) - if [ ! "${FIND}" = "" ]; then - OS_REDHAT_OR_CLONE=1 - OS_FULLNAME=$(grep "^Amazon" /etc/system-release) - OS_VERSION=$(grep "^Amazon" /etc/system-release | awk '{ if ($4=="release") { print $5 } }') - LINUX_VERSION="Amazon" - fi - fi - - # Arch Linux - if [ -e "/etc/arch-release" ]; then - OS_FULLNAME="Arch Linux" - OS_VERSION="Unknown" - LINUX_VERSION="Arch Linux" - fi - - # Chakra Linux - if [ -e "/etc/chakra-release" ]; then - OS_FULLNAME=$(grep "^Chakra" /etc/chakra-release) - OS_VERSION=$(awk '/^Chakra/ { if ($3=="release") { print $4 }}' /etc/chakra-release) - LINUX_VERSION="Chakra Linux" - fi - - # Cobalt - if [ -e "/etc/cobalt-release" ]; then OS_FULLNAME=$(cat /etc/cobalt-release); fi - # CPUBuilders Linux - if [ -e "/etc/cpub-release" ]; then OS_FULLNAME=$(cat /etc/cpub-release); fi - - # Debian/Ubuntu (***) - Set first to Debian - if [ -e "/etc/debian_version" ]; then - OS_VERSION=$(cat /etc/debian_version) - OS_FULLNAME="Debian ${OS_VERSION}" - LINUX_VERSION="Debian" - fi - # /etc/lsb-release does not exist on Debian - if [ -e "/etc/debian_version" -a -e /etc/lsb-release ]; then + OS="Linux" + OS_NAME="Linux" + OS_FULLNAME="" + OS_VERSION=$(uname -r) + LINUX_VERSION="" + HARDWARE=$(uname -m) + HOMEDIRS="/home" + FIND_BINARIES="whereis -b" + OS_KERNELVERSION_FULL=$(uname -r) + OS_KERNELVERSION=$(echo ${OS_KERNELVERSION_FULL} | sed 's/-.*//') + if [ -e /dev/grsec ]; then GRSEC_FOUND=1; fi + + # Amazon + if [ -e "/etc/system-release" ]; then + FIND=$(grep "Amazon" /etc/system-release) + if [ ! "${FIND}" = "" ]; then + OS_REDHAT_OR_CLONE=1 + OS_FULLNAME=$(grep "^Amazon" /etc/system-release) + OS_VERSION=$(grep "^Amazon" /etc/system-release | awk '{ if ($4=="release") { print $5 } }') + LINUX_VERSION="Amazon" + fi + fi + + # Arch Linux + if [ -e "/etc/arch-release" ]; then + OS_FULLNAME="Arch Linux" + OS_VERSION="Unknown" + LINUX_VERSION="Arch Linux" + fi + + # Chakra Linux + if [ -e "/etc/chakra-release" ]; then + OS_FULLNAME=$(grep "^Chakra" /etc/chakra-release) + OS_VERSION=$(awk '/^Chakra/ { if ($3=="release") { print $4 }}' /etc/chakra-release) + LINUX_VERSION="Chakra Linux" + fi + + # Cobalt + if [ -e "/etc/cobalt-release" ]; then OS_FULLNAME=$(cat /etc/cobalt-release); fi + # CPUBuilders Linux + if [ -e "/etc/cpub-release" ]; then OS_FULLNAME=$(cat /etc/cpub-release); fi + + # Debian/Ubuntu (***) - Set first to Debian + if [ -e "/etc/debian_version" ]; then + OS_VERSION=$(cat /etc/debian_version) + OS_FULLNAME="Debian ${OS_VERSION}" + LINUX_VERSION="Debian" + fi + + # /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) FIND=$(grep "^DISTRIB_ID=" /etc/lsb-release | cut -d '=' -f2 | sed 's/"//g') if [ "${FIND}" = "Ubuntu" ]; then OS_VERSION=$(grep "^DISTRIB_RELEASE=" /etc/lsb-release | cut -d '=' -f2) OS_FULLNAME="Ubuntu ${OS_VERSION}" LINUX_VERSION="Ubuntu" - elif [ "${FIND}" = "elementary OS" ]; then + elif [ "${FIND}" = "elementary OS" ]; then LINUX_VERSION="elementary OS" 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') - else + else # Catch all, in case it's unclear what specific release this is. OS_FULLNAME="Debian ${OS_VERSION}" LINUX_VERSION="Debian" fi # Ubuntu test (optional) $(grep "[Uu]buntu" /proc/version) - 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 - if [ -e "/etc/redhat-release" ]; then + 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 + if [ -e "/etc/redhat-release" ]; then OS_REDHAT_OR_CLONE=1 # CentOS @@ -238,125 +241,126 @@ 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 FIND=$(grep "Scientific" /etc/redhat-release) 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 } }') LINUX_VERSION="Scientific" fi - fi - - # PCLinuxOS - 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 - if [ -f /etc/sabayon-edition ]; then - FIND=$(grep "Sabayon Linux" /etc/sabayon-edition) - if [ ! "${FIND}" = "" ]; then - OS_FULLNAME="Sabayon Linux" - LINUX_VERSION="Sabayon" - OS_VERSION=$(awk '{ print $3 }' /etc/sabayon-edition) - fi - fi - - if [ -f /etc/SLOX-release ]; then - OS_FULLNAME=$(grep "SuSE Linux" /etc/SLOX-release) - LINUX_VERSION="SuSE" - fi - - # Slackware - if [ -f /etc/slackware-version ]; then - LINUX_VERSION="Slackware" - OS_VERSION=$(grep "^Slackware" /etc/slackware-version | awk '{ if ($1=="Slackware") { print $2 } }') - OS_FULLNAME="Slackware Linux ${OS_VERSION}" - fi - - # SuSE - if [ -e "/etc/SuSE-release" ]; then - OS_VERSION=$(head -n 1 /etc/SuSE-release) - LINUX_VERSION="SuSE" - fi - - # Turbo Linux - if [ -e "/etc/turbolinux-release" ]; then OS_FULLNAME=$(cat /etc/turbolinux-release); fi - - # YellowDog - if [ -e "/etc/yellowdog-release" ]; then OS_FULLNAME=$(cat /etc/yellowdog-release); fi - - # VMware - if [ -e "/etc/vmware-release" ]; then - 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 - - # =================================================================== - # 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" + 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 + + fi + + # PCLinuxOS + 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 + if [ -f /etc/sabayon-edition ]; then + FIND=$(grep "Sabayon Linux" /etc/sabayon-edition) + if [ ! "${FIND}" = "" ]; then + OS_FULLNAME="Sabayon Linux" + LINUX_VERSION="Sabayon" + OS_VERSION=$(awk '{ print $3 }' /etc/sabayon-edition) + fi + fi + + if [ -f /etc/SLOX-release ]; then + OS_FULLNAME=$(grep "SuSE Linux" /etc/SLOX-release) + LINUX_VERSION="SuSE" + fi + + # Slackware + if [ -f /etc/slackware-version ]; then + LINUX_VERSION="Slackware" + OS_VERSION=$(grep "^Slackware" /etc/slackware-version | awk '{ if ($1=="Slackware") { print $2 } }') + OS_FULLNAME="Slackware Linux ${OS_VERSION}" + fi + + # SuSE + if [ -e "/etc/SuSE-release" ]; then + OS_VERSION=$(head -n 1 /etc/SuSE-release) + LINUX_VERSION="SuSE" + fi + + # Turbo Linux + if [ -e "/etc/turbolinux-release" ]; then OS_FULLNAME=$(cat /etc/turbolinux-release); fi + # YellowDog + if [ -e "/etc/yellowdog-release" ]; then OS_FULLNAME=$(cat /etc/yellowdog-release); fi + + # VMware + if [ -e "/etc/vmware-release" ]; then + 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 + + # =================================================================== + # 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) - OS="NetBSD" - OS_NAME="NetBSD" - OS_FULLNAME=$(uname -s -r) - OS_KERNELVERSION=$(uname -v) - OS_VERSION=$(uname -r) - HARDWARE=$(uname -m) - FIND_BINARIES="whereis" - SYSCTL_READKEY="" + OS="NetBSD" + OS_NAME="NetBSD" + OS_FULLNAME=$(uname -s -r) + OS_KERNELVERSION=$(uname -v) + OS_VERSION=$(uname -r) + HARDWARE=$(uname -m) + FIND_BINARIES="whereis" + SYSCTL_READKEY="" ;; # OpenBSD OpenBSD) - OS="OpenBSD" - OS_NAME="OpenBSD" - OS_FULLNAME=$(uname -s -r) - OS_KERNELVERSION=$(uname -v) - OS_VERSION=$(uname -r) - HARDWARE=$(uname -m) - FIND_BINARIES="whereis" - SYSCTL_READKEY="" + OS="OpenBSD" + OS_NAME="OpenBSD" + OS_FULLNAME=$(uname -s -r) + OS_KERNELVERSION=$(uname -v) + OS_VERSION=$(uname -r) + HARDWARE=$(uname -m) + FIND_BINARIES="whereis" + SYSCTL_READKEY="" ;; # Solaris / OpenSolaris SunOS) - OS="Solaris" - OS_NAME="Sun Solaris" - OS_FULLNAME=$(uname -s -r) - OS_VERSION=$(uname -r) - HARDWARE=$(uname -m) - if [ -x /usr/bin/isainfo ]; then - # Returns 32, 64 - OS_MODE=$(/usr/bin/isainfo -b) - fi - SYSCTL_READKEY="" + OS="Solaris" + OS_NAME="Sun Solaris" + OS_FULLNAME=$(uname -s -r) + OS_VERSION=$(uname -r) + HARDWARE=$(uname -m) + if [ -x /usr/bin/isainfo ]; then + # Returns 32, 64 + OS_MODE=$(/usr/bin/isainfo -b) + fi + SYSCTL_READKEY="" ;; # VMware products @@ -382,10 +386,10 @@ # Unknown or unsupported systems *) - echo "[ ${WARNING}WARNING${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." - exit 1 + echo "[ ${WARNING}WARNING${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." + exit 1 ;; esac @@ -394,19 +398,19 @@ ECHONB="" case ${OS} in - "AIX") ECHOCMD="echo" ;; - "DragonFly"|"FreeBSD"|"NetBSD") ECHOCMD="echo -e"; ECHONB="echo -n" ;; - "MacOS") ECHOCMD="echo"; ECHONB="echo -n" ;; - "Solaris") ECHOCMD="echo" ;; - "Linux") - # Check if dash is used (Debian/Ubuntu) - DEFAULT_SHELL=$(ls -l /bin/sh | awk -F'>' '{print $2}') - case ${DEFAULT_SHELL} in - " dash") ECHOCMD="/bin/echo -e" ;; - *) ECHOCMD="echo -e" ;; - esac - ;; - *) ECHOCMD="echo -e" ;; + "AIX") ECHOCMD="echo" ;; + "DragonFly"|"FreeBSD"|"NetBSD") ECHOCMD="echo -e"; ECHONB="echo -n" ;; + "MacOS") ECHOCMD="echo"; ECHONB="echo -n" ;; + "Solaris") ECHOCMD="echo" ;; + "Linux") + # Check if dash is used (Debian/Ubuntu) + DEFAULT_SHELL=$(ls -l /bin/sh | awk -F'>' '{print $2}') + case ${DEFAULT_SHELL} in + " dash") ECHOCMD="/bin/echo -e" ;; + *) ECHOCMD="echo -e" ;; + esac + ;; + *) ECHOCMD="echo -e" ;; esac # Check if we have full featured commands, or are using BusyBox as a shell |