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

distr_info: updated from distro_info 1.6

parent ece1e1f8
#!/bin/sh
# 2007-2019 (c) Vitaly Lipatov <lav@etersoft.ru>
# 2007-2019 (c) Etersoft
# 2007-2019 Public domain
# 2007-2020 (c) Vitaly Lipatov <lav@etersoft.ru>
# 2007-2020 (c) Etersoft
# 2007-2020 Public domain
# You can set ROOTDIR to root system dir
#ROOTDIR=
PROGVERSION="20201010"
# TODO: check /etc/system-release
# Check for DISTRO specific file in /etc
......@@ -121,11 +123,14 @@ if distro altlinux-release ; then
elif has "ALT Linux 7." ; then DISTRIB_RELEASE="p7"
elif has "ALT Linux t7." ; then DISTRIB_RELEASE="t7"
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 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 7." ; then DISTRIB_RELEASE="p7"
elif has "Simply Linux 8." ; then DISTRIB_RELEASE="p8"
......@@ -287,7 +292,7 @@ elif distro os-release ; then
elif [ "$(uname)" = "FreeBSD" ] ; then
DISTRIB_ID="FreeBSD"
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?
elif [ "$(uname)" = "SunOS" ] ; then
......@@ -398,6 +403,25 @@ esac
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()
{
local DIST_BIT
......@@ -430,8 +454,9 @@ echo "$DIST_BIT"
}
# TODO: check before calc
get_memory_size() {
local detected=0
get_memory_size()
{
local detected=""
local DIST_OS="$(get_base_os_name)"
case "$DIST_OS" in
macosx)
......@@ -443,9 +468,14 @@ get_memory_size() {
linux)
[ -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
# Exit codes only support values between 0 and 255. So use stdout.
[ -n "$detected" ] || detected=0
echo $detected
}
......@@ -454,6 +484,32 @@ print_name_version()
[ -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()
{
local VIRT
......@@ -499,29 +555,34 @@ print_pretty_name()
print_total_info()
{
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)
Distro name and version (-e): $(print_name_version)
Packaging system (-p): $(pkgtype)
Running service manager (-y): $(get_service_manager)
Virtualization (-i): $(get_virt)
CPU Cores (-c): $(get_core_count)
CPU Architecture (-a): $(get_arch)
CPU norm register size (-b): $(get_bit_size)
System memory size (MB) (-m): $(get_memory_size)
Base OS name (-o): $(get_base_os_name)
Build system distro name (-s): $(pkgvendor)
Build system vendor name (-n): $(rpmvendor)
(run with -h to get help)
EOF
}
case $1 in
-h)
echo "distro_info - distro name and version detection"
echo "distro_info v$PROGVERSION - distro information retriever"
echo "Usage: distro_info [options] [args]"
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 " -c - print number of CPU cores"
echo " -d - print distro name"
echo " -e - print full name of distro with version"
echo " -i - print virtualization type"
......@@ -547,6 +608,12 @@ case $1 in
--pretty)
print_pretty_name
;;
--distro-arch)
# override DISTRIB_ID
test -n "$2" && DISTRIB_ID="$2"
get_distro_arch
exit 0
;;
-d)
echo $DISTRIB_ID
;;
......@@ -556,6 +623,9 @@ case $1 in
-b)
get_bit_size
;;
-c)
get_core_count
;;
-i)
get_virt
;;
......@@ -584,7 +654,7 @@ case $1 in
get_service_manager
;;
-V)
echo "20191121"
echo "$PROGVERSION"
exit 0
;;
-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