#!/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