bash/snippets/detect_os.sh

109 lines
2.4 KiB
Bash
Executable File

#!/usr/bin/env bash
detect_os_1 () {
if $(which lsb_release > /dev/null 2>&1) ; then
os_dist="$(lsb_release -i | awk '{print tolower($3)}')"
os_version="$(lsb_release -r | awk '{print tolower($2)}')"
os_codename="$(lsb_release -c | awk '{print tolower($2)}')"
if [[ "$os_dist" = "debian" ]]; then
if $(echo "$os_version" | grep -q '\.') ; then
os_version=$(echo "$os_version" | cut --delimiter='.' -f1)
fi
fi
elif [[ -e "/etc/os-release" ]]; then
. /etc/os-release
os_dist=$ID
os_version=${VERSION_ID}
fi
# remove whitespace from os_dist and os_version
os_dist="${os_dist// /}"
os_version="${os_version// /}"
}
detect_os_2 ()
{
if [[ ( -z "${os}" ) && ( -z "${os_dist}" ) ]]; then
# some systems dont have lsb-release yet have the lsb_release binary and
# vice-versa
if [ -e /etc/lsb-release ]; then
. /etc/lsb-release
if [ "${ID}" = "raspbian" ]; then
os=${ID}
os_dist=`cut --delimiter='.' -f1 /etc/debian_version`
else
os=${DISTRIB_ID}
os_dist=${DISTRIB_CODENAME}
if [ -z "$os_dist" ]; then
os_dist=${DISTRIB_RELEASE}
fi
fi
elif [ `which lsb_release 2>/dev/null` ]; then
os_dist=`lsb_release -c | cut -f2`
os=`lsb_release -i | cut -f2 | awk '{ print tolower($1) }'`
elif [ -e /etc/debian_version ]; then
# some Debians have jessie/sid in their /etc/debian_version
# while others have '6.0.7'
os=`cat /etc/issue | head -1 | awk '{ print tolower($1) }'`
if grep -q '/' /etc/debian_version; then
os_dist=`cut --delimiter='/' -f1 /etc/debian_version`
else
os_dist=`cut --delimiter='.' -f1 /etc/debian_version`
fi
else
os_dist="unknown"
os="unknown"
fi
fi
if [ -z "$os_dist" ]; then
os_dist="unknown"
fi
# remove whitespace from OS and os_dist name
os="${os// /}"
os_dist="${os_dist// /}"
echo "Detected operating system as $os/$os_dist."
}
detect_os_1
echo -e "\nOutput from function 'detect_os_1'"
echo "=================================="
echo "Distribution: ${os_dist}"
echo "Version: ${os_version}"
if [[ -n "$os_codename" ]]; then
echo "Codename: ${os_codename}"
fi
os=""
os_dist=""
os_version=""
os_codename=""
echo -e "\nOutput from function 'detect_os_2'"
echo "=================================="
detect_os_2
echo "OS: $os"
echo "Dist: $os_dist"
echo
exit