diff --git a/test/.gitignore b/test/.gitignore new file mode 100644 index 0000000..1a06816 --- /dev/null +++ b/test/.gitignore @@ -0,0 +1 @@ +results diff --git a/test/distro.sh b/test/distro.sh new file mode 100644 index 0000000..81b639b --- /dev/null +++ b/test/distro.sh @@ -0,0 +1,151 @@ +#!/usr/bin/env sh +# Detects which OS and if it is Linux then it will detect which Linux Distribution. + +OS=`uname -s` +REV=`uname -r` +MACH=`uname -m` + +if [ "${OS}" = "SunOS" ] ; then + OS=Solaris + ARCH=`uname -p` + OSSTR="${OS} ${REV}(${ARCH} `uname -v`)" + +elif [ "${OS}" = "AIX" ] ; then + OSSTR="${OS} `oslevel` (`oslevel -r`)" + +elif [ "${OS}" = "Linux" ] ; then + KERNEL=`uname -r` + + if [ -f /etc/fedora-release ]; then + DIST=$(cat /etc/fedora-release | awk '{print $1}') + REV=`cat /etc/fedora-release | sed s/.*release\ // | sed s/\ .*//` + + elif [ -f /etc/redhat-release ] ; then + DIST=$(cat /etc/redhat-release | awk '{print $1}') + if [ "${DIST}" = "CentOS" ]; then + DIST="CentOS" + IGNORE_OS_RELEASE=1 # https://bugs.centos.org/view.php?id=8359 + elif [ "${DIST}" = "CloudLinux" ]; then + DIST="CloudLinux" + elif [ "${DIST}" = "Mandriva" ]; then + DIST="Mandriva" + PSEUDONAME=`cat /etc/mandriva-release | sed s/.*\(// | sed s/\)//` + REV=`cat /etc/mandriva-release | sed s/.*release\ // | sed s/\ .*//` + elif [ -f /etc/oracle-release ]; then + DIST="Oracle" + elif [ -f /etc/rockstor-release ]; then + DIST="Rockstor" + else + DIST="RedHat" + fi + + PSEUDONAME=`cat /etc/redhat-release | sed s/.*\(// | sed s/\)//` + REV=`cat /etc/redhat-release | sed s/.*release\ // | sed s/\ .*//` + + elif [ -f /etc/mandrake-release ] ; then + DIST='Mandrake' + PSEUDONAME=`cat /etc/mandrake-release | sed s/.*\(// | sed s/\)//` + REV=`cat /etc/mandrake-release | sed s/.*release\ // | sed s/\ .*//` + + elif [ -f /etc/devuan_version ] ; then + DIST="Devuan `cat /etc/devuan_version`" + REV="" + + elif [ -f /etc/debian_version ] ; then + DIST="Debian `cat /etc/debian_version`" + REV="" + IGNORE_OS_RELEASE=1 + if [ -f /usr/bin/lsb_release ] ; then + ID=`lsb_release -i | awk -F ':' '{print $2}' | sed 's/ //g'` + fi + if [ "${ID}" = "Raspbian" ] ; then + DIST="Raspbian `cat /etc/debian_version`" + fi + if [ -f /usr/bin/pveversion ]; then + DIST="${DIST}/PVE `/usr/bin/pveversion | cut -d '/' -f 2`" + fi + if [ -f /usr/bin/pmgversion ]; then + # pmgversion requires root permissions to run, please add NOPASSWD setting to visudo. + DIST="${DIST}/PMG `sudo /usr/bin/pmgversion | cut -d '/' -f 2`" + fi + if [ -f /etc/dogtag ]; then + DIST=`cat /etc/dogtag` + fi + + elif [ -f /etc/gentoo-release ] ; then + DIST="Gentoo" + REV=$(tr -d '[[:alpha:]]' /dev/null 2>&1 + fi + fi + + # try standardized os version methods + if [ -f /etc/os-release -a "${IGNORE_OS_RELEASE}" != 1 ] ; then + . /etc/os-release + STD_DIST="$NAME" + STD_REV="$VERSION_ID" + elif [ -f /etc/lsb-release -a "${IGNORE_LSB}" != 1 ] ; then + STD_DIST=$(lsb_release -si) + STD_REV=$(lsb_release -sr) + fi + if [ -n "${STD_DIST}" ]; then + DIST="${STD_DIST}" + fi + if [ -n "${STD_REV}" ]; then + REV="${STD_REV}" + fi + + if [ -n "${REV}" ]; then + OSSTR="${DIST} ${REV}" + else + OSSTR="${DIST}" + fi + +elif [ "${OS}" = "Darwin" ] ; then + if [ -f /usr/bin/sw_vers ] ; then + OSSTR=`/usr/bin/sw_vers|grep -v Build|sed 's/^.*:.//'| tr "\n" ' '` + fi + +elif [ "${OS}" = "FreeBSD" ] ; then + if [ -f /etc/version ] ; then + DIST=$(cat /etc/version | cut -d'-' -f 1) + if [ "${DIST}" = "FreeNAS" ]; then + OSSTR=`cat /etc/version | cut -d' ' -f 1` + fi + else + OSSTR=`/usr/bin/uname -mior` + fi +fi + +echo ${OSSTR} + diff --git a/test/getenv.sh b/test/getenv.sh new file mode 100755 index 0000000..3173ab9 --- /dev/null +++ b/test/getenv.sh @@ -0,0 +1,25 @@ +#!/usr/bin/env bash + +readonly getenv_dir="$(cd "$(dirname -- "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)" +get_os_version() { + local os_version= + local utils_version= + + os_version="$(bash "${getenv_dir}/distro.sh" | sed 's/ /_/g')" + + bash_version="$(bash --version | sed -n '/bash, [Vv]ersion/p' | sed 's/.*[Vv]ersion \([0-9.]\+\).*/\1/g')" + + if utils_version="$(readlink --version 2>&1 | grep -E "BusyBox")" ; then + utils_version="$(sed 's/\(BusyBox v[0-9\.]\+\).*/\1/g' <<<${utils_version})" + elif utils_version="$(readlink --version 2>&1 | grep -E "GNU core")" ; then + utils_version="$(sed 's/.*\(GNU [[:alnum:]]\+\). \([0-9\.]\+\).*/\1 \2/g' <<<${utils_version})" + else + utils_version="utils_unkown" + fi + # Replace " " with _ + utils_version="${utils_version// /_}" + + echo "${os_version}_${bash_version:+bash_${bash_version}}_${utils_version}" +} + +get_os_version diff --git a/test/savetest.sh b/test/savetest.sh new file mode 100755 index 0000000..3bb35b5 --- /dev/null +++ b/test/savetest.sh @@ -0,0 +1,15 @@ +#!/usr/bin/env bash + +savetest() { + local target_file= + readonly savetest_dir="$(cd "$(dirname -- "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)" + + target_dir="${savetest_dir}/results" + mkdir -p "${target_dir}" + + target_file="${target_dir}/$("${savetest_dir}/getenv.sh")_result.log" + + "${savetest_dir}/test_rdlink.sh" >"${target_file}" 2>&1 +} + +savetest