Noobunbox

Voilà vous avez installé Observium, si vous ne savez pas de quoi je parle cliquez-ici, mais celui-ci au lieu d’afficher l’icone de votre distribution vous affiche une image générique pour les OS linux.

Commencez par créer un nouveau fichier dans /usr/bin/ que nous nommerons distro

sudo nano /usr/bin/distro

 

Dans ce nouveau fichier collez l’intégralité du script ci-dessous

#!/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

 

Rendez ce script exécutable

chmod 755 /usr/bin/distro

 

Maintenant ouvrez le fichier de configuration SNMP

sudo nano /etc/snmp/snmpd.conf

 

Ajoutez la ligne suivante

extend .1.3.6.1.4.1.2021.7890.1 distro /usr/bin/distro

 

Redémarrez le service

sudo service snmpd restart

 

Attendez quelques minutes et Observium devrait maintenant personnaliser les icônes de vos machines en fonction de la distribution installée

 

 

Catégories : Monitoring

Novakin

Passionné d'informatique depuis de longues années je me suis tourné vers Linux et des solutions de virtualisation il y a peu. Ce blog est une sorte de carnet de web où je partage mes mémos.

Poster un Commentaire

Ce site utilise Akismet pour réduire les indésirables. Apprenez comment les données de vos commentaires sont utilisées.

  Subscribe  
Me notifier des