sampledoc

groupΒΆ

Probe used to dynamically set client groups based on OS/distro.

Note

Some parts of this script may depend on having lsb-release installed.

#!/bin/bash

OUTPUT=""

if [ -e /etc/release ]; then
        # Solaris
        OUTPUT=$OUTPUT'\n'`echo group:solaris`
elif [ -e /etc/debian_version ]; then
        # debian based
        OUTPUT=$OUTPUT'\n'`echo group:deb`
        if [ -e /etc/lsb-release ]; then
                # variant
                . /etc/lsb-release
                OS_GROUP=$DISTRIB_CODENAME
                DEBIAN_VERSION=$(echo "$DISTRIB_ID" | tr '[A-Z' '[a-z]')
                case "$OS_GROUP" in
                        "lucid")
                        OUTPUT=$OUTPUT'\n'`echo group:$DISTRIB_CODENAME`
                        OUTPUT=$OUTPUT'\n'`echo group:$DEBIAN_VERSION`
                        ;;
                esac
        else
                # debian
                OS_GROUP=`cat /etc/debian_version`
                OUTPUT=$OUTPUT'\n'`echo group:debian`
                case "$OS_GROUP" in
                        5.*)
                        OUTPUT=$OUTPUT'\n'`echo group:lenny`
                        ;;
                        "sid")
                        OUTPUT=$OUTPUT'\n'`echo group:sid`
                        ;;
                esac
        fi
elif [ -e /etc/redhat-release ]; then
        # redhat based
        OUTPUT=$OUTPUT'\n'`echo group:rpm`
        OS_GROUP=`cat /etc/redhat-release | cut -d' ' -f1 | tr '[A-Z]' '[a-z]'`
        REDHAT_VERSION=`cat /etc/redhat-release | cut -d' ' -f3`
        case "$OS_GROUP" in
                "centos" | "fedora")
                OUTPUT=$OUTPUT'\n'`echo group:$OS_GROUP`
                OUTPUT=$OUTPUT'\n'`echo group:$OS_GROUP$REDHAT_VERSION`
                ;;
        esac
elif [ -e /etc/gentoo-release ]; then
        # gentoo
        OUTPUT=$OUTPUT'\n'`echo group:gentoo`
elif [ -x /usr/sbin/system_profiler ]; then
        # os x
        ### NOTE: Think about using system_profiler SPSoftwareDataType here
        OUTPUT=$OUTPUT'\n'`echo group:osx`
        OSX_VERSION=`sw_vers | grep 'ProductVersion:' | egrep -o '[0-9]+\.[0-9]+'`
        if [ "$OSX_VERSION" == "10.6" ]; then
                OUTPUT=$OUTPUT'\n'`echo group:osx-snow`
        elif [ "$OSX_VERSION" == "10.5" ]; then
                OUTPUT=$OUTPUT'\n'`echo group:osx-leo`
        fi
        echo $OUTPUT
else
        exit 0
fi
# get the proper architecture
ARCH=`uname -m`
case "$ARCH" in
        "x86_64")
        if [ "$OS_GROUP" == 'centos' ]; then
                OUTPUT=$OUTPUT'\n'`echo group:$ARCH`
        else
                OUTPUT=$OUTPUT'\n'`echo group:amd64`
        fi
        ;;
        "i386" | "i686")
        OUTPUT=$OUTPUT'\n'`echo group:i386`
        ;;
        "sparc64")
        OUTPUT=$OUTPUT'\n'`echo group:sparc64`
        ;;
esac

# output the result of all the group probing
# (interpreting the backslashed newlines)
echo -e $OUTPUT

Previous topic

current-kernel

Next topic

vserver

This Page