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