Commit 689f5d88 authored by Vitaly Lipatov's avatar Vitaly Lipatov

distr_info: updated from distro_info 1.6

parent ece1e1f8
#!/bin/sh #!/bin/sh
# 2007-2019 (c) Vitaly Lipatov <lav@etersoft.ru> # 2007-2020 (c) Vitaly Lipatov <lav@etersoft.ru>
# 2007-2019 (c) Etersoft # 2007-2020 (c) Etersoft
# 2007-2019 Public domain # 2007-2020 Public domain
# You can set ROOTDIR to root system dir # You can set ROOTDIR to root system dir
#ROOTDIR= #ROOTDIR=
PROGVERSION="20201010"
# TODO: check /etc/system-release # TODO: check /etc/system-release
# Check for DISTRO specific file in /etc # Check for DISTRO specific file in /etc
...@@ -121,11 +123,14 @@ if distro altlinux-release ; then ...@@ -121,11 +123,14 @@ if distro altlinux-release ; then
elif has "ALT Linux 7." ; then DISTRIB_RELEASE="p7" elif has "ALT Linux 7." ; then DISTRIB_RELEASE="p7"
elif has "ALT Linux t7." ; then DISTRIB_RELEASE="t7" elif has "ALT Linux t7." ; then DISTRIB_RELEASE="t7"
elif has "ALT Linux 8." ; then DISTRIB_RELEASE="p8" elif has "ALT Linux 8." ; then DISTRIB_RELEASE="p8"
elif has "ALT .*8.[0-9]" ; then DISTRIB_RELEASE="p8"
elif has "ALT .*9.[0-9]" ; then DISTRIB_RELEASE="p9"
elif has "ALT p9 " ; then DISTRIB_RELEASE="p9"
elif has "ALT 8 SP " ; then DISTRIB_RELEASE="c8" elif has "ALT 8 SP " ; then DISTRIB_RELEASE="c8"
elif has "ALT 9 SP " ; then DISTRIB_RELEASE="c9" elif has "ALT 9 SP " ; then DISTRIB_RELEASE="c9"
elif has "ALT c8 " ; then DISTRIB_RELEASE="c8"
elif has "ALT c8.1 " ; then DISTRIB_RELEASE="c8.1"
elif has "ALT c8.2 " ; then DISTRIB_RELEASE="c8.2"
elif has "ALT .*8.[0-9]" ; then DISTRIB_RELEASE="p8"
elif has "ALT .*9.[0-9]" ; then DISTRIB_RELEASE="p9"
elif has "ALT p9.* p9 " ; then DISTRIB_RELEASE="p9"
elif has "Simply Linux 6." ; then DISTRIB_RELEASE="p6" elif has "Simply Linux 6." ; then DISTRIB_RELEASE="p6"
elif has "Simply Linux 7." ; then DISTRIB_RELEASE="p7" elif has "Simply Linux 7." ; then DISTRIB_RELEASE="p7"
elif has "Simply Linux 8." ; then DISTRIB_RELEASE="p8" elif has "Simply Linux 8." ; then DISTRIB_RELEASE="p8"
...@@ -287,7 +292,7 @@ elif distro os-release ; then ...@@ -287,7 +292,7 @@ elif distro os-release ; then
elif [ "$(uname)" = "FreeBSD" ] ; then elif [ "$(uname)" = "FreeBSD" ] ; then
DISTRIB_ID="FreeBSD" DISTRIB_ID="FreeBSD"
UNAME=$(uname -r) UNAME=$(uname -r)
DISTRIB_RELEASE=$(echo "$UNAME" | grep RELEASE | sed -e "s|\([0-9]\.[0-9]\)-RELEASE|\1|g") DISTRIB_RELEASE=$(echo "$UNAME" | grep RELEASE | sed -e "s|\([0-9]\.[0-9]\)-RELEASE|\1|g") #"
# fixme: can we detect by some file? # fixme: can we detect by some file?
elif [ "$(uname)" = "SunOS" ] ; then elif [ "$(uname)" = "SunOS" ] ; then
...@@ -398,6 +403,25 @@ esac ...@@ -398,6 +403,25 @@ esac
echo "$DIST_ARCH" echo "$DIST_ARCH"
} }
get_distro_arch()
{
local arch="$(get_arch)"
case "$(pkgtype)" in
rpm)
:
;;
deb)
case $arch in
'i586')
arch='i386' ;;
'x86_64')
arch='amd64' ;;
esac
;;
esac
echo "$arch"
}
get_bit_size() get_bit_size()
{ {
local DIST_BIT local DIST_BIT
...@@ -430,8 +454,9 @@ echo "$DIST_BIT" ...@@ -430,8 +454,9 @@ echo "$DIST_BIT"
} }
# TODO: check before calc # TODO: check before calc
get_memory_size() { get_memory_size()
local detected=0 {
local detected=""
local DIST_OS="$(get_base_os_name)" local DIST_OS="$(get_base_os_name)"
case "$DIST_OS" in case "$DIST_OS" in
macosx) macosx)
...@@ -443,9 +468,14 @@ get_memory_size() { ...@@ -443,9 +468,14 @@ get_memory_size() {
linux) linux)
[ -r /proc/meminfo ] && detected=$((`cat /proc/meminfo | grep MemTotal | awk '{print $2}'`/1024)) [ -r /proc/meminfo ] && detected=$((`cat /proc/meminfo | grep MemTotal | awk '{print $2}'`/1024))
;; ;;
solaris)
detected=$(prtconf | grep Memory | sed -e "s|Memory size: \([0-9][0-9]*\) Megabyte.*|\1|")
;;
# *)
# fatal "Unsupported OS $DIST_OS"
esac esac
# Exit codes only support values between 0 and 255. So use stdout. [ -n "$detected" ] || detected=0
echo $detected echo $detected
} }
...@@ -454,6 +484,32 @@ print_name_version() ...@@ -454,6 +484,32 @@ print_name_version()
[ -n "$DISTRIB_RELEASE" ] && echo $DISTRIB_ID/$DISTRIB_RELEASE || echo $DISTRIB_ID [ -n "$DISTRIB_RELEASE" ] && echo $DISTRIB_ID/$DISTRIB_RELEASE || echo $DISTRIB_ID
} }
get_core_count()
{
local detected=""
local DIST_OS="$(get_base_os_name)"
case "$DIST_OS" in
macos|freebsd)
detected=$(sysctl hw.ncpu | awk '{print $2}')
;;
linux)
detected=$(grep -c "^processor" /proc/cpuinfo)
;;
solaris)
detected=$(prtconf | grep -c 'cpu[^s]')
;;
aix)
detected=$(lsdev -Cc processor -S A | wc -l)
;;
# *)
# fatal "Unsupported OS $DIST_OS"
esac
[ -n "$detected" ] || detected=0
echo $detected
}
get_virt() get_virt()
{ {
local VIRT local VIRT
...@@ -499,29 +555,34 @@ print_pretty_name() ...@@ -499,29 +555,34 @@ print_pretty_name()
print_total_info() print_total_info()
{ {
cat <<EOF cat <<EOF
distro_info total information (run with -h to get help): distro_info v$PROGVERSION : Copyright © 2007-2020 Etersoft
==== Total system information:
Pretty distro name (--pretty): $(print_pretty_name) Pretty distro name (--pretty): $(print_pretty_name)
Distro name and version (-e): $(print_name_version) Distro name and version (-e): $(print_name_version)
Packaging system (-p): $(pkgtype) Packaging system (-p): $(pkgtype)
Running service manager (-y): $(get_service_manager) Running service manager (-y): $(get_service_manager)
Virtualization (-i): $(get_virt) Virtualization (-i): $(get_virt)
CPU Cores (-c): $(get_core_count)
CPU Architecture (-a): $(get_arch) CPU Architecture (-a): $(get_arch)
CPU norm register size (-b): $(get_bit_size) CPU norm register size (-b): $(get_bit_size)
System memory size (MB) (-m): $(get_memory_size) System memory size (MB) (-m): $(get_memory_size)
Base OS name (-o): $(get_base_os_name) Base OS name (-o): $(get_base_os_name)
Build system distro name (-s): $(pkgvendor) Build system distro name (-s): $(pkgvendor)
Build system vendor name (-n): $(rpmvendor) Build system vendor name (-n): $(rpmvendor)
(run with -h to get help)
EOF EOF
} }
case $1 in case $1 in
-h) -h)
echo "distro_info - distro name and version detection" echo "distro_info v$PROGVERSION - distro information retriever"
echo "Usage: distro_info [options] [args]" echo "Usage: distro_info [options] [args]"
echo "Options:" echo "Options:"
echo " -a - print hardware architecture" echo " -a - print hardware architecture (--distro-arch for distro depended name)"
echo " -b - print size of arch bit (32/64)" echo " -b - print size of arch bit (32/64)"
echo " -c - print number of CPU cores"
echo " -d - print distro name" echo " -d - print distro name"
echo " -e - print full name of distro with version" echo " -e - print full name of distro with version"
echo " -i - print virtualization type" echo " -i - print virtualization type"
...@@ -547,6 +608,12 @@ case $1 in ...@@ -547,6 +608,12 @@ case $1 in
--pretty) --pretty)
print_pretty_name print_pretty_name
;; ;;
--distro-arch)
# override DISTRIB_ID
test -n "$2" && DISTRIB_ID="$2"
get_distro_arch
exit 0
;;
-d) -d)
echo $DISTRIB_ID echo $DISTRIB_ID
;; ;;
...@@ -556,6 +623,9 @@ case $1 in ...@@ -556,6 +623,9 @@ case $1 in
-b) -b)
get_bit_size get_bit_size
;; ;;
-c)
get_core_count
;;
-i) -i)
get_virt get_virt
;; ;;
...@@ -584,7 +654,7 @@ case $1 in ...@@ -584,7 +654,7 @@ case $1 in
get_service_manager get_service_manager
;; ;;
-V) -V)
echo "20191121" echo "$PROGVERSION"
exit 0 exit 0
;; ;;
-e) -e)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment