Просмотр исходного кода

Distro info is now a loop that fills in missing gaps

Daniel Gibbs 8 лет назад
Родитель
Сommit
67436b1016
1 измененных файлов с 44 добавлено и 18 удалено
  1. 44 18
      lgsm/functions/info_distro.sh

+ 44 - 18
lgsm/functions/info_distro.sh

@@ -14,26 +14,52 @@ local function_selfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
 arch=$(uname -m)
 arch=$(uname -m)
 kernel=$(uname -r)
 kernel=$(uname -r)
 
 
-# Distro name - Ubuntu 16.04
+# Distro Name - Ubuntu 16.04 LTS
 # Distro Version - 16.04
 # Distro Version - 16.04
 # Distro ID - ubuntu
 # Distro ID - ubuntu
-if [ -f "/etc/os-release" ]; then
-	distroname=$(grep PRETTY_NAME /etc/os-release | sed 's/PRETTY_NAME=//g' | tr -d '="')
-	distroversion=$(grep VERSION_ID /etc/os-release | sed 's/VERSION_ID=//g' | sed 's/\"//g')
-	distroid=$(grep ID /etc/os-release | grep -v _ID | grep -v ID_ | sed 's/ID=//g')
-elif [ -n "$(command -v lsb_release)" ]; then
-	distroname="$(lsb_release -sd)"
-	distroversion="$(lsb_release -sr)"
-	distroid=$(lsb_release -sc)
-elif [ -f "/etc/debian_version" ]; then
-	distroname="Debian $(cat /etc/debian_version)"
-	distroversion="$(cat /etc/debian_version)"
-	distroid="debian"
-elif [ -f "/etc/redhat-release" ]; then
-	distroname=$(cat /etc/redhat-release)
-	distroversion=$(rpm -qa \*-release | grep -Ei "oracle|redhat|centos|fedora" | cut -d"-" -f3)
-	distroid="$(wk '{print $1;}' /etc/redhat-release)"
-fi
+# Distro Codename - xenial
+
+# Gathers distro info from various sources filling in missing gaps
+distro_info_array=( os-release lsb_release hostnamectl debian_version redhat-release )
+for distro_info in "${distro_info_array[@]}"
+do
+	if [ -f "/etc/os-release" ]&&[ "${distro_info}" == "os-release" ]; then
+		distroname=$(grep PRETTY_NAME /etc/os-release | sed 's/PRETTY_NAME=//g' | tr -d '="' | sed 's/\"//g')
+		distroversion=$(grep VERSION_ID /etc/os-release | sed 's/VERSION_ID=//g' | sed 's/\"//g')
+		distroid=$(grep ID /etc/os-release | grep -v _ID | grep -v ID_ | sed 's/ID=//g' | sed 's/\"//g')
+		distrocodename=$(grep VERSION_CODENAME /etc/os-release | sed 's/VERSION_CODENAME=//g' | sed 's/\"//g')
+	elif [ -n "$(command -v lsb_release 2>/dev/null)" ]&&[ "${distro_info}" == "lsb_release" ]; then
+		if [ -z "${distroname}" ];then
+			distroname="$(lsb_release -sd)"
+		elif [ -z "${distroversion}" ];then
+			distroversion="$(lsb_release -sr)"
+		elif [ -z "${distroid}" ];then
+			distroid=$(lsb_release -si)
+		elif [ -z "${distrocodename}" ];then
+			distrocodename=$(lsb_release -sc)
+		fi
+	elif [ -n "$(command -v hostnamectl 2>/dev/null)" ]&&[ "${distro_info}" == "hostnamectl" ]; then
+		if [ -z "${distroname}" ];then
+			distroname="$(hostnamectl | grep "Operating System" | sed 's/Operating System: //g')"
+		fi
+	elif [ -f "/etc/debian_version" ]&&[ "${distro_info}" == "debian_version" ]; then
+		if [ -z "${distroname}" ];then
+			distroname="Debian $(cat /etc/debian_version)"
+		elif [ -z "${distroversion}" ];then
+			distroversion="$(cat /etc/debian_version)"
+		elif [ -z "${distroid}" ];then
+			distroid="debian"
+		fi
+	elif [ -f "/etc/redhat-release" ]&&[ "${distro_info}" == "redhat-release" ]; then
+		if [ -z "${distroname}" ];then
+			distroname=$(cat /etc/redhat-release)
+		elif [ -z "${distroversion}" ];then
+			distroversion=$(rpm -qa \*-release | grep -Ei "oracle|redhat|centos|fedora" | cut -d"-" -f3)
+		elif [ -z "${distroid}" ];then
+			distroid="$(wk '{print $1;}' /etc/redhat-release)"
+		fi
+	fi
+done
 
 
 ## Glibc version
 ## Glibc version
 # e.g: 1.17
 # e.g: 1.17