6f32578d2806ab198c1f495da5b29ed899fe4cf5
[progfou.git] / sysadmin / sysadmin-check-version-arch
1 #!/bin/sh
2 # sysadmin-check-version-arch - vérifie la version et l'architecture système
3 # Copyright ©2011  Agence universitaire de la Francophonie
4 #                  http://www.auf.org/
5 # Licence : GNU General Public License, version 3
6 # Auteur : Progfou <jean-christophe.andre@auf.org>
7 # Création : 2011-04-26
8 # Mise à jour : 2011-04-28
9
10 EXPECTED_DEBIAN_VERSION="6.0.1"
11 ACCEPTED_DEBIAN_VERSION="5.0.8"
12 if grep -qE ' Intel.* Xeon| AMD.* Opteron' /proc/cpuinfo ; then
13   EXPECTED_DEBIAN_ARCH="x86_64"
14   ACCEPTED_DEBIAN_ARCH="i686"
15 else
16   EXPECTED_DEBIAN_ARCH="i686"
17   ACCEPTED_DEBIAN_ARCH="i686"
18 fi
19
20 EXPECTED_UBUNTU_VERSION="10.04"
21 ACCEPTED_UBUNTU_VERSION="10.04"
22 EXPECTED_UBUNTU_ARCH="i686"
23 ACCEPTED_UBUNTU_ARCH="i686"
24
25 colorize() {
26   color="$1" ; shift ; data="$@"
27   if [ "${color}" = "green" ] ; then
28     data="\033[1;32m${data}\033[m"
29   elif [ "${color}" = "red" ] ; then
30     data="\033[1;31m${data}\033[m"
31   fi
32   printf "${data}"
33 }
34
35 display_host() {
36   name="$1" ; dist="$2" ; version="$3" ; arch="$4"
37   if [ "${dist}" = "Ubuntu" ] ; then
38     expected_version="${EXPECTED_UBUNTU_VERSION}"
39     accepted_version="${ACCEPTED_UBUNTU_VERSION}"
40     expected_arch="${EXPECTED_UBUNTU_ARCH}"
41     accepted_arch="${ACCEPTED_UBUNTU_ARCH}"
42   elif [ "${dist}" = "Debian" ] ; then
43     expected_version="${EXPECTED_DEBIAN_VERSION}"
44     accepted_version="${ACCEPTED_DEBIAN_VERSION}"
45     expected_arch="${EXPECTED_DEBIAN_ARCH}"
46     accepted_arch="${ACCEPTED_DEBIAN_ARCH}"
47   else
48     dist="`colorize red "${dist}"`"
49   fi
50   if [ "${version}" = "${expected_version}" ] ; then
51     version="`colorize green "${version}"`"
52   elif [ "${version}" != "${accepted_version}" ] ; then
53     version="`colorize red "${version}"`"
54   fi
55   if [ "${arch}" = "${expected_arch}" ] ; then
56     arch="`colorize green "${arch}"`"
57   elif [ "${arch}" != "${accepted_arch}" ] ; then
58     arch="`colorize red "${arch}"`"
59   fi
60   printf "%-25s: %s %s (%s)\n" "${name}" "${dist}" "${version}" "${arch}"
61 }
62
63 display_host "CT 0 (host)" "`lsb_release -si`" "`lsb_release -sr`" "`uname -m`"
64 if test -x /usr/sbin/vzctl
65 then
66   IDS="`vzlist -H -o ctid`"
67   if [ -n "${IDS}" ] ; then
68     for id in ${IDS}
69     do
70       name="`sed -n '/^NAME=/s/^.*="\?\([^"]*\)"\?.*$/\1/p' /etc/vz/conf/${id}.conf`"
71       if [ -z "${name}" ] ; then
72         name="`sed -n '/^HOSTNAME=/s/^.*="\?\([^"]*\)"\?.*$/\1/p' /etc/vz/conf/${id}.conf`"
73       fi
74       dist="`vzctl exec ${id} lsb_release -si 2>/dev/null`"
75       if [ -n "${dist}" ] ; then
76         version="`vzctl exec ${id} lsb_release -sr 2>/dev/null`"
77       else
78         dist="(paquet lsb-release manquant)"
79         version="???"
80       fi
81       arch="`vzctl exec ${id} uname -m`"
82       display_host "CT ${id} (${name})" "${dist}" "${version}" "${arch}"
83     done
84   fi
85 fi