Gestion de tag pour en garantir la conservation.
[auf-inventaire.git] / auf-inventaire-config
1 #!/bin/sh
2 # script de mise à jour de la config' de FusionInventory
3 # syntaxe : auf-inventaire-config [<tag>]
4 DEFAULT_FILE="/etc/default/fusioninventory-agent"
5 CONFIG_FILE="/etc/fusioninventory/agent.cfg"
6 TAG_FILE="/etc/fusioninventory/tag"
7
8 config_help() {
9   cat << __EOF__
10
11 \e[1;31mAttention :\e[m \e[1mvous devez configurer un code d'inventaire !\e[m
12
13 Pour ce faire, utilisez la commande suivante : \e[1;32mauf-inventaire-config PPn-Ixxxx\e[m
14 où \e[1;36mPPn\e[m est le code d'implantation et \e[1;36mIxxxx\e[m est le numéro d'inventaire.
15 (note : cette commande est à lancer sous \e[1;36mroot\e[m, ou via \e[1;36msudo\e[m)
16
17 Exemple pour un portable à Montréal : \e[1;36mauf-inventaire-config CA1-I1359\e[m
18 Exemple pour un serveur à Danang : \e[1;36mauf-inventaire-config VN2-I1014\e[m
19
20 __EOF__
21 }
22
23 update_file() {
24   file="$1" ; line="$2"
25   grep -q -x "${line}" "${file}" && return
26   left_part="`echo "${line}" | cut -d'=' -f1`="
27   sed -i "/^${left_part}/s/^/#/" "${file}"
28   echo "${line}" >> "${file}"
29 }
30
31 #
32 # traitement de l'option de tag par défaut
33 #
34 if [ "$1" = "-d" -o "$1" = "--default-tag" ] ; then
35   default_tag="$2"
36   shift 2
37 else
38   default_tag=""
39 fi
40
41 #
42 # récupération du tag (fourni ou sauvé)
43 #
44 need_config="no"
45 if [ -n "$1" ] ; then
46   # tag fourni en ligne de commande
47   tag="$1"
48 elif [ -r "${TAG_FILE}" ] ; then
49   # récupération depuis son fichier dédié (à partir de la version 0.5)
50   tag="`cat "${TAG_FILE}"`"
51 else
52   # récupération d'un tag non auf-* depuis la config' de FusionInventory
53   # (permet de retrouver le tag entré avant le passage en version 0.4)
54   tag="`awk '/^#?tag =/{if($3!=""&&$3!~/^auf-/){tag=$3}}END{print tag}' "${CONFIG_FILE}"`"
55   if [ -z "${tag}" ] ; then
56     # récupération d'un éventuel tag auf-* depuis la config' de FusionInventory
57     tag="`awk '/^#?tag =/{if($3!=""){tag=$3}}END{print tag}' "${CONFIG_FILE}"`"
58   fi
59 fi
60 # tag vide, mais indication d'un tag par défaut ?
61 if [ -z "${tag}" -a -n "${default_tag}" ] ; then
62   # utilisation du tag par défaut
63   tag="${default_tag}"
64 fi
65 # tag vide ou non configuré (= toujours en auf-*) ?
66 if [ -z "${tag}" ] || expr match "${tag}" '^auf-' >/dev/null ; then
67   # à configurer !
68   need_config="yes"
69 fi
70 # besoin d'aide ?
71 if [ "${need_config}" != "no" ] ; then
72   config_help
73 fi
74
75 #echo "=> tag=[${tag}]"
76 #exit 0
77
78 #
79 # mise en conformité de la configuration de FusionInventory
80 #
81 while read line ; do
82   update_file "${CONFIG_FILE}" "${line}"
83 done << __EOF__
84 server = https://glpi.auf.org/glpi/plugins/fusioninventory/
85 no-task = deploy
86 #ca-cert-file = /etc/ssl/certs/AUF-RACINE+BA.pem
87 no-ssl-check = 1
88 no-httpd = 1
89 logger = Syslog
90 __EOF__
91
92 #
93 # configuration et sauvegarde du tag, s'il est présent
94 #
95 if [ -n "${tag}" ] ; then
96   update_file "${CONFIG_FILE}" "tag = ${tag}"
97   if [ ! -e "${TAG_FILE}" ] ; then
98     touch "${TAG_FILE}"
99     chmod --reference="${CONFIG_FILE}" "${TAG_FILE}"
100   fi
101   update_file "${TAG_FILE}" "${tag}"
102 fi
103
104 #
105 # mise en mode démon de FusionInventory
106 #
107 update_file "${DEFAULT_FILE}" "MODE=daemon"
108
109 #
110 # redémarrage du service
111 #
112 if [ -x /usr/sbin/service ] ; then
113   service fusioninventory-agent stop
114   sleep 2
115   service fusioninventory-agent start
116 else # support des anciennes distributions Debian (ex. : Lenny)
117   invoke-rc.d fusioninventory-agent stop
118   sleep 2
119   invoke-rc.d fusioninventory-agent start
120 fi
121
122 echo "Envoi immédiat des informations d'inventaire..."
123 exec fusioninventory-agent --no-fork --logger=Stderr