258 lines
		
	
	
		
			7.3 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			258 lines
		
	
	
		
			7.3 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
#!/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 "<<<distro>>>"
 | 
						|
	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
 |