129 lines
2.9 KiB
Bash
Executable File
129 lines
2.9 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
detect_os_1 () {
|
|
if [[ -r /etc/os-release ]]; then
|
|
|
|
. /etc/os-release
|
|
|
|
os_dist="$ID"
|
|
os_version="$VERSION_ID"
|
|
|
|
# Familie bestimmen
|
|
if [[ "$ID" == "debian" ]] || [[ "$ID_LIKE" == *"debian"* ]]; then
|
|
os_family="debian"
|
|
elif [[ "$ID" == "rhel" ]] || [[ "$ID_LIKE" == *"rhel"* ]]; then
|
|
os_family="rhel"
|
|
elif [[ "$ID" == "arch" ]] || [[ "$ID_LIKE" == *"arch"* ]]; then
|
|
os_family="arch"
|
|
else
|
|
os_family="$ID"
|
|
fi
|
|
|
|
elif which lsb_release > /dev/null 2>&1 ; then
|
|
|
|
local dist version
|
|
|
|
dist=$(lsb_release -is 2>/dev/null | tr '[:upper:]' '[:lower:]')
|
|
version=$(lsb_release -rs 2>/dev/null | cut -d. -f1) # Major Version
|
|
|
|
os_dist="$dist"
|
|
os_version="$version"
|
|
|
|
case "$dist" in
|
|
debian|ubuntu|linuxmint)
|
|
os_family="debian"
|
|
;;
|
|
rhel|centos|rocky|fedora)
|
|
os_family="rhel"
|
|
;;
|
|
arch)
|
|
os_family="arch"
|
|
;;
|
|
*)
|
|
os_family="$dist"
|
|
;;
|
|
esac
|
|
fi
|
|
|
|
# Nur Major-Version extrahieren (z.B. 12 aus 12.5)
|
|
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
|