#!/bin/bash # # Copyright (C) 2006-2011 Eric Shubert # Last modified: April 16, 2011 # # Figure out what Distro/Release/Arch this machine is and set environment # variables accordingly for QmailToaster-Plus scripts. # # It can also be run from the command line, so users can see # before trying an install if their system is supported, # or to assist with manual installs or support. # # Note: when setting environment variables for a calling script, this script # needs to be sourced when executed to retain variable values, e.g. # . qtp-whatami # # Use -s option to suppress std out messages, e.g.: . qtp-whatami -s # # return status values: # 0 - machine is supported and tested # 1 - machine is supported, not tested # 4 - machine is recognized, not supported # 5 - machine is not recognized # 8 - invalid usage (parameter not recognized) # # BUILD_DIST values # # CentOS 3.x Linux rht90 # CentOS 4.x Linux cnt40 # CentOS 4.x x86_64 Linux cnt4064 # CentOS 5.x Linux cnt50 # CentOS 5.x x86_64 Linux cnt5064 # CentOS 6.x Linux cnt60 # CentOS 6.x x86_64 Linux cnt6064 # Fedora Core 1 Linux fdr10 # Fedora Core 2 Linux fdr20 # Fedora Core 3 Linux fdr30 # Fedora Core 4 Linux fdr40 # Fedora Core 4 x86_64 Linux fdr4064 # Fedora Core 5 Linux fdr50 # Fedora Core 5 x86_64 Linux fdr5064 # Fedora Core 6 Linux fdr60 # Fedora Core 6 x86_64 Linux fdr6064 # Fedora Core 7 Linux fdr60 # Fedora Core 7 x86_64 Linux fdr6064 # Fedora Core 8 Linux fdr60 # Fedora Core 8 x86_64 Linux fdr6064 # Fedora Core 9 Linux fedora_9 # Fedora Core 9 x86_64 Linux fedora_964 # Fedora Core 10 Linux fedora_10 # Fedora Core 10 x86_64 Linux fedora_1064 # Fedora Core 11 Linux fedora_11 # Fedora Core 11 x86_64 Linux fedora_1164 # Fedora Core 12 Linux fedora_12 # Fedora Core 12 x86_64 Linux fedora_1264 # Fedora Core 13 Linux fedora_13 # Fedora Core 13 x86_64 Linux fedora_1364 # Fedora Core 14 Linux fedora_14 # Fedora Core 14 x86_64 Linux fedora_1464 # Fedora Core 15 Linux fedora_15 # Fedora Core 15 x86_64 Linux fedora_1564 # Mandrake 10.0 Linux mdk100 # Mandrake 10.1 Linux mdk101 # Mandriva 2005 Linux mdk102 # Mandriva 2006 Linux mdk103 # Mandriva 2006 x86_64 mdk10364 # Mandriva 2007 Linux mdk104 # Mandriva 2007 x86_64 mdk10464 # Mandriva 2009 Linux mdr09 # Mandriva 2009 x86_64 mdr0964 # Red Hat 9 Linux rht90 # Red Hat Enterprise 4.x cnt40 # Red Hat Enterprise 4.x x86_64 cnt4064 # Red Hat Enterprise 5.x cnt50 # Red Hat Enterprise 5.x x86_64 cnt5064 # Red Hat Enterprise 6.x cnt60 # Red Hat Enterprise 6.x x86_64 cnt6064 # openSuSE 10.0 Linux sus100 # openSuSE 10.0 x86_64 Linux sus10064 # openSuSE 10.1 Linux sus101 # openSuSE 10.1 x86_64 Linux sus10164 # Trustix 2.0 Linux trx20 (no longer supported) supported_distros="\ cnt40 \ cnt4064 \ cnt50 \ cnt5064 \ cnt60 \ cnt6064 \ fdr10 \ fdr20 \ fdr30 \ fdr40 \ fdr4064 \ fdr50 \ fdr5064 \ fdr60 \ fdr6064 \ fedora_9 \ fedora_964 \ fedora_10 \ fedora_1064 \ fedora_11 \ fedora_1164 \ fedora_12 \ fedora_1264 \ fedora_13 \ fedora_1364 \ fedora_14 \ fedora_1464 \ mdk100 \ mdk101 \ mdk102 \ mdk103 \ mdk10364 \ mdk104 \ mdk10464 \ mdr09 \ mdr0964 \ rht90 \ sus100 \ sus10064 \ sus101 \ sus10164 \ " ################################################################### ## try to determine distro from /etc/*release file # # scyld needs to come before redhat, since they include a redhat-release file # mandriva and mandrake need to be before redhat too, same story # a2_check_releases(){ release_info=$(cat /etc/scyld-release 2>/dev/null) if [ -z "$release_info" ]; then release_info=$(cat /etc/mandriva-release 2>/dev/null) if [ ! -z "$release_info" ]; then b20_read_release_info b21_mandriva else release_info=$(cat /etc/mandrake-release 2>/dev/null) if [ ! -z "$release_info" ]; then b20_read_release_info b22_mandrake else release_info=$(cat /etc/fedora-release 2>/dev/null) if [ ! -z "$release_info" ]; then b20_read_release_info b23_fedora else release_info=$(cat /etc/redhat-release 2>/dev/null) if [ ! -z "$release_info" ]; then b20_read_release_info b24_redhat else release_info=$(cat /etc/SuSE-release 2>/dev/null) if [ ! -z "$release_info" ]; then b20_read_release_info b25_suse else release_info=$(cat /etc/trustix-release 2>/dev/null) if [ -z "$release_info" ]; then release_info=$(cat /etc/yellowdog-release 2>/dev/null) if [ -z "$release_info" ]; then release_info=$(cat /etc/turbolinux-release 2>/dev/null) if [ -z "$release_info" ]; then release_info=$(cat /etc/slackware-release 2>/dev/null) if [ -z "$release_info" ]; then release_info=$(cat /etc/gentoo-release 2>/dev/null) if [ -z "$release_info" ]; then release_info=$(cat /etc/sun-release 2>/dev/null) if [ -z "$release_info" ]; then release_info=$(cat /etc/UnitedLinux-release 2>/dev/null) if [ -z "$release_info" ]; then release_info=$(cat /etc/release 2>/dev/null) if [ -z "$release_info" ]; then release_info=$(cat /etc/debian_release 2>/dev/null) if [ -z "$release_info" ]; then release_info=$(cat /etc/lsb-release 2>/dev/null) if [ -z "$release_info" ]; then return 1 fi fi fi fi fi fi fi fi fi fi fi fi fi fi fi fi return 0 } ################################################################### ## split up release information into separate words # b20_read_release_info(){ read word1 word2 word3 word4 word5 word6 word7 word8 word9 <