#!/bin/sh # Observium License Version 1.0 # # Copyright (c) 2013 Joe Holden # # The intent of this license is to establish the freedom to use, share and contribute to # the software regulated by this license. # # This license applies to any software containing a notice placed by the copyright holder # saying that it may be distributed under the terms of this license. Such software is herein # referred to as the Software. This license covers modification and distribution of the # Software. # # Granted Rights # # 1. You are granted the non-exclusive rights set forth in this license provided you agree to # and comply with any and all conditions in this license. Whole or partial distribution of the # Software, or software items that link with the Software, in any form signifies acceptance of # this license. # # 2. You may copy and distribute the Software in unmodified form provided that the entire package, # including - but not restricted to - copyright, trademark notices and disclaimers, as released # by the initial developer of the Software, is distributed. # # 3. You may make modifications to the Software and distribute your modifications, in a form that # is separate from the Software, such as patches. The following restrictions apply to modifications: # # a. Modifications must not alter or remove any copyright notices in the Software. # b. When modifications to the Software are released under this license, a non-exclusive royalty-free # right is granted to the initial developer of the Software to distribute your modification in # future versions of the Software provided such versions remain available under these terms in # addition to any other license(s) of the initial developer. # # Limitations of Liability # # In no event shall the initial developers or copyright holders be liable for any damages whatsoever, # including - but not restricted to - lost revenue or profits or other direct, indirect, special, # incidental or consequential damages, even if they have been advised of the possibility of such damages, # except to the extent invariable law, if any, provides otherwise. # # No Warranty # # The Software and this license document are provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE # WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. # # URL: https://github.com/joeholden/distroscript/ # README: https://raw.github.com/joeholden/distroscript/master/README.md # Shells are made of dicks. DISTROSCRIPT="1.0.15" if [ -z ${DISTROFORMAT} ]; then DISTROFORMAT="pipe" fi if [ -n "${AGENT_LIBDIR}" -o -n "${MK_LIBDIR}" ]; then # Set output for check_mk/observium agent DISTROFORMAT="export" fi getos() { OS=`uname -s` if [ "${OS}" = "SunOS" ]; then OS="Solaris" elif [ "${OS}" = "DragonFly" ]; then OS="DragonFlyBSD" fi export OS return 0 } getkernel() { KERNEL=`uname -r` export KERNEL return 0 } getdistro() { if [ "${OS}" = "Linux" ]; then if [ -f /etc/os-release ]; then . /etc/os-release DISTRO=`echo ${NAME} | awk '{print $1}'` elif [ -x /usr/bin/lsb_release ]; then DISTRO=`/usr/bin/lsb_release -si 2>/dev/null` elif [ -f /etc/redhat-release ]; then DISTRO=`cat /etc/redhat-release | awk '{print $1}'` elif [ -f /etc/fedora-release ]; then DISTRO="Fedora" elif [ -f /etc/mandriva-release ]; then DISTRO="Mandriva" elif [ -f /etc/arch-release ]; then DISTRO="ArchLinux" elif [ -f /etc/gentoo-release ]; then DISTRO="Gentoo" elif [ -f /etc/SuSE-release ]; then DISTRO="SuSE" elif [ -f /etc/mandrake-release ]; then DISTRO="Mandrake" elif [ -f /etc/debian_version ]; then # shit based on debian if [ -f /etc/mailcleaner/etc/mailcleaner/version.def ]; then DISTRO="MailCleaner" else DISTRO="Debian" fi elif [ -f /etc/UnitedLinux-release ]; then DISTRO="UnitedLinux" elif [ -f /etc/openwrt_version ]; then DISTRO="OpenWRT" elif [ -f /etc/slackware-version ]; then DISTRO="Slackware" else DISTRO="Unknown" fi # Fixing some Distro names if [ "${DISTRO}" = "Debian GNU/Linux" ]; then DISTRO="Debian" elif [ "${DISTRO}" = "Red" -o "${DISTRO}" = "RedHatEnterpriseServer" ]; then DISTRO="RedHat" elif [ "${DISTRO}" = "Arch" ]; then DISTRO="ArchLinux" fi elif [ "${OS}" = "FreeBSD" ]; then if [ -f /etc/platform -a -f /etc/version ]; then DISTRO="pfSense" elif [ -f /etc/platform -a -f /etc/prd.name ]; then DISTRO=`cat /etc/prd.name` elif [ -f /usr/local/bin/pbreg ]; then DISTRO="PC-BSD" elif [ -f /tmp/freenas_config.md5 ]; then DISTRO="FreeNAS" else DISTRO= fi elif [ "${OS}" = "Solaris" ]; then DISTRO=`head -n 1 /etc/release | awk '{print $1}'` if [ "${DISTRO}" = "Solaris" -o "${DISTRO}" = "Oracle" ]; then DISTRO= fi elif [ "${OS}" = "Darwin" ]; then case `uname -m` in AppleTV2*) DISTRO="AppleTV2" ;; AppleTV3*) DISTRO="AppleTV3" ;; iPhone*) DISTRO="iPhone" ;; iPod*) DISTRO="iPOD" ;; *) DISTRO="OSX" ;; esac else DISTRO= fi export DISTRO return 0 } getarch() { if [ "${OS}" = "Solaris" ]; then ARCH=`isainfo -k` elif [ "${OS}" = "Darwin" ]; then ARCH=`uname -p` else ARCH=`uname -m` fi if [ "${OS}" = "Linux" ]; then if [ "${ARCH}" = "x86_64" ]; then ARCH="amd64" elif [ "${ARCH}" = "i486" -o "${ARCH}" = "i586" -o "${ARCH}" = "i686" ]; then ARCH="i386" fi fi export ARCH return 0 } getversion() { if [ "${OS}" = "FreeBSD" -o "${OS}" = "DragonFlyBSD" ]; then if [ "${DISTRO}" = "pfSense" ]; then VERSION=`cat /etc/version` elif [ "${DISTRO}" = "PC-BSD" ]; then VERSION=`pbreg get /PC-BSD/Version` elif [ -f /etc/prd.version ]; then VERSION=`cat /etc/prd.version` else VERSION=`uname -i` fi elif [ "${OS}" = "OpenBSD" -o "${OS}" = "NetBSD" ]; then VERSION=`uname -v` elif [ "${OS}" = "Linux" ]; then if [ "${DISTRO}" = "OpenWRT" ]; then VERSION=`cat /etc/openwrt_version` elif [ "${DISTRO}" = "Slackware" ]; then VERSION=`cat /etc/slackware-version | cut -d" " -f2` elif [ -f /etc/redhat-release ]; then VERSION=`cat /etc/redhat-release | sed 's/.*release\ //' | sed 's/\ .*//'` elif [ -x /usr/bin/lsb_release ]; then VERSION=`lsb_release -sr 2>/dev/null` elif [ -f /etc/os-release ]; then . /etc/os-release VERSION=${VERSION_ID} else VERSION= fi elif [ "${OS}" = "Darwin" ]; then VERSION=`sw_vers -productVersion` elif [ "${OS}" = "Solaris" ]; then VERSION=`uname -v` fi export VERSION return 0 } if [ -z ${DISTROEXEC} ]; then getos getkernel getarch getdistro getversion if [ "${AGENT_LIBDIR}" -o "${MK_LIBDIR}" ]; then echo "<<>>" fi if [ "${DISTROFORMAT}" = "pipe" ]; then echo "${OS}|${KERNEL}|${ARCH}|${DISTRO}|${VERSION}" elif [ "${DISTROFORMAT}" = "twopipe" ]; then echo "${OS}||${KERNEL}||${ARCH}||${DISTRO}||${VERSION}" elif [ "${DISTROFORMAT}" = "ini" ]; then echo "[distroscript]" echo " OS = ${OS}" echo " KERNEL = ${KERNEL}" echo " ARCH = ${ARCH}" echo " DISTRO = ${DISTRO}" echo " DISTROVER = ${VERSION}" echo " SCRIPTVER = ${DISTROSCRIPT}" elif [ "${DISTROFORMAT}" = "export" ]; then echo "OS=${OS}" echo "KERNEL=${KERNEL}" echo "ARCH=${ARCH}" echo "DISTRO=${DISTRO}" echo "DISTROVER=${VERSION}" echo "SCRIPTVER=${DISTROSCRIPT}" else echo "Unsupported output format." exit 1 fi exit 0 fi