diff --git a/test.sh b/test.sh index 560d9f8..38275d2 100755 --- a/test.sh +++ b/test.sh @@ -25,21 +25,63 @@ echo -e "${CS[color,LightGreen]}Detected system: $distrib_name${CS[color,Default echo "" -arch=$(uname -m) -kernel=$(uname -r) -if [ -n "$(command -v lsb_release)" ]; then - distroname=$(lsb_release -s -d) -elif [ -f "/etc/os-release" ]; then - distroname=$(grep PRETTY_NAME /etc/os-release | sed 's/PRETTY_NAME=//g' | tr -d '="') -elif [ -f "/etc/debian_version" ]; then - distroname="Debian $(cat /etc/debian_version)" -elif [ -f "/etc/redhat-release" ]; then - distroname=$(cat /etc/redhat-release) + + +giveUp () { + echo "Unknown" + exit 0 +} + +# keep this easily awkable, prepending an initial clue +versionGuess () { + if [ -e /proc/version ]; then + echo -n "Unsure " + cat /proc/version + exit 0 + fi + return 1 +} + +# if we have ignition, print and exit +gotDist () { + [ -n "$1" ] && echo "$1" && exit 0 +} + +# we are only interested in a single word "dist" here +# various malformations can occur; admin will have to code appropately based on output +linuxRelease () { + if [ -r /etc/lsb-release ]; then + dist=$(grep 'DISTRIB_ID' /etc/lsb-release | sed 's/DISTRIB_ID=//' | head -1) + gotDist "$dist" + fi + + dist=$(find /etc/ -maxdepth 1 -name '*release' 2> /dev/null | sed 's/\/etc\///' | sed 's/-release//' | head -1) + gotDist "$dist" + + dist=$(find /etc/ -maxdepth 1 -name '*version' 2> /dev/null | sed 's/\/etc\///' | sed 's/-version//' | head -1) + gotDist "$dist" + + return 1 +} + +# start with uname and branch the decision from there +dist=$(uname -s 2> /dev/null) +if [ "$dist" = "Linux" ]; then + linuxRelease + versionGuess + giveUp +elif [ -n "$dist" ]; then + echo "$dist" + exit 0 else - distroname="$(uname -s) $(uname -r)" + versionGuess + giveUp fi -echo "${distroname}" +# we shouldn't get here +giveUp +# done + exit 0 \ No newline at end of file