| @ -0,0 +1,152 @@ | |||||
| #!/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="" | |||||
| 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`" | |||||
| IGNORE_OS_RELEASE=1 | |||||
| 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`" | |||||
| IGNORE_OS_RELEASE=1 | |||||
| fi | |||||
| if [ -f /etc/dogtag ]; then | |||||
| DIST=`cat /etc/dogtag` | |||||
| IGNORE_OS_RELEASE=1 | |||||
| fi | |||||
| elif [ -f /etc/gentoo-release ] ; then | |||||
| DIST="Gentoo" | |||||
| REV=$(tr -d '[[:alpha:]]' </etc/gentoo-release | tr -d " ") | |||||
| elif [ -f /etc/arch-release ] ; then | |||||
| DIST="Arch Linux" | |||||
| REV="" # Omit version since Arch Linux uses rolling releases | |||||
| IGNORE_LSB=1 # /etc/lsb-release would overwrite $REV with "rolling" | |||||
| elif [ -f /etc/photon-release ] ; then | |||||
| DIST=$(head -1 < /etc/photon-release) | |||||
| REV=$(sed -n -e 's/^.*PHOTON_BUILD_NUMBER=//p' /etc/photon-release) | |||||
| IGNORE_LSB=1 # photon os does not have /etc/lsb-release nor lsb_release | |||||
| elif [ -f /etc/openwrt_version ] ; then | |||||
| DIST="OpenWrt" | |||||
| REV=$(cat /etc/openwrt_version) | |||||
| elif [ -f /etc/pld-release ] ; then | |||||
| DIST=$(cat /etc/pld-release) | |||||
| REV="" | |||||
| elif [ -f /etc/SuSE-release ] ; then | |||||
| DIST=$(echo SLES $(grep VERSION /etc/SuSE-release | cut -d = -f 2 | tr -d " ")) | |||||
| REV=$(echo SP$(grep PATCHLEVEL /etc/SuSE-release | cut -d = -f 2 | tr -d " ")) | |||||
| fi | |||||
| if [ -x "$(command -v awk)" ]; then # some distros do not ship with awk | |||||
| if [ "`uname -a | awk '{print $(NF)}'`" = "DD-WRT" ] ; then | |||||
| DIST="dd-wrt" | |||||
| fi | |||||
| if [ "`uname -a | awk '{print $(NF)}'`" = "ASUSWRT-Merlin" ] ; then | |||||
| DIST="ASUSWRT-Merlin" | |||||
| REV=`nvram show | grep buildno= | egrep -o '[0-9].[0-9].[0-9]'` > /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} | |||||