MONIT_DIR=/etc/monit.d
TEMPLATES_DIR=/usr/share/monit-cn
+
check_service() {
RET=0
-
filename="$1"
+
if [ ! -r "$filename" ]; then
RET=1
return 1
scriptinit='BEGIN { RS = "[ \t\n]+" }
{ line[NR] = $0 "" }
END { for (j in line)
- if (((line[j] == "start") || (line[j] == "stop")) && (line[j + 1] == "program"))
+ if (((line[j] == "start") || (line[j] == "stop")) && (line[j + 1] == "program") && (line[j + 2] == "="))
print line[j + 3] }'
initscripts=$(awk "$scriptinit" < "$filename" | sed -e 's/"//g')
check_initscript $initscripts
return 0
}
+check_template() {
+ RET=0
+ filename="$1"
+ serviceconf=$(basename $i)
+
+ if [ ! -r "$1" ]; then
+ RET=1
+ return 1
+ fi
+
+ if [ ! -r "${TEMPLATES_DIR}/${serviceconf}" ]; then
+ RET=0
+ return 0
+ fi
+
+ if ! grep -q "^#.*monit-cn template" "$filename"; then
+ RET=0
+ return 0
+ fi
+
+ if ! cmp -s "$filename" "${TEMPLATES_DIR}/${serviceconf}"; then
+ RET=1
+ return 1
+ fi
+
+ return $RET
+}
+
+
#####################################################################
changed=0
fi
for i in $(find "$MONIT_DIR" -name '*.conf'); do
+ check_template $i
+ if [ ! $RET -eq 0 ]; then
+ serviceconf=$(basename $i)
+ echo "CN: Restored default $serviceconf template"
+ cp -a "${TEMPLATES_DIR}/${serviceconf}" "$MONIT_DIR"
+ changed=1
+ fi
+done
+
+for i in $(find "$MONIT_DIR" -name '*.conf'); do
check_service $i
if [ ! $RET -eq 0 ]; then
serviceconf=$(basename $i)
for i in $(find "$TEMPLATES_DIR" -name '*.conf'); do
serviceconf=$(basename $i)
- if [ -r "$MONIT_DIR"/$serviceconf.disabled ]; then
- check_service "$MONIT_DIR"/$serviceconf.disabled
+ if [ -r "${MONIT_DIR}/${serviceconf}.disabled" ]; then
+ check_service "${MONIT_DIR}/${serviceconf}.disabled"
if [ $RET -eq 0 ]; then
- if [ ! -r "$MONIT_DIR"/$serviceconf ]; then
+ if [ ! -r "${MONIT_DIR}/${serviceconf}" ]; then
echo "CN: Enabled $serviceconf (previously disabled)"
- mv "$MONIT_DIR"/$serviceconf.disabled \
- "$MONIT_DIR"/$serviceconf
+ mv "${MONIT_DIR}/${serviceconf}.disabled" \
+ "${MONIT_DIR}/${serviceconf}"
changed=1
fi
fi
else
check_service $i
if [ $RET -eq 0 ]; then
- if [ ! -r "$MONIT_DIR"/$serviceconf ]; then
+ if [ ! -r "${MONIT_DIR}/${serviceconf}" ]; then
echo "CN: Enabled $serviceconf (new service)"
- cp -a $i "$MONIT_DIR"
+ cp -a $i "${MONIT_DIR}"
changed=1
fi
fi
fi
exit 0
+
+# vi:ft=sh