#!/bin/bash

clear
echo 'Проверка соединения с сервером конфигураций'
NOW=$(date +%s)
INTERVAL=$((60 * 60 * 24))
PUPPET_START=/linuxcash/cash/tools/tools_avail/puppet-start.sh
LAST_RUN=
PUPPET_LOG_FILE=/linuxcash/logs/current/puppet.log
log_puppet () {
    if [ $# -gt 0 ]; then
        echo "$(date +"%F %X") - $@" >> $PUPPET_LOG_FILE
    else
        while read data
        do
            echo "$(date +"%F %X") - $data" >> $PUPPET_LOG_FILE
        done
    fi
}

if [ -e /usr/sbin/puppetd ] ; then
    CONF_FILE=/var/lib/puppet/state/state.yaml
elif [ -e /opt/puppetlabs/bin/puppet ]; then
    CONF_FILE=$(sudo puppet config print lastrunfile 2>/dev/null)
    CONF_FILE=${CONF_FILE:-/opt/puppetlabs/puppet/cache/state/last_run_summary.yaml}
elif [ -e /usr/bin/puppet ]; then
    CONF_FILE=/var/lib/puppet/state/last_run_summary.yaml
else
  log_puppet "Не установлен клиент для сервера управления конфигурацией"
  return 0
fi

if [ ! -e "$CONF_FILE" ] ; then
    log_puppet "Не найден файл конфигурации $CONF_FILE"
  return 0
fi
LAST_RUN=$(sudo date +%s -r "$CONF_FILE")

DIFFERENCE=$((${NOW} - ${LAST_RUN}))

if [ ${DIFFERENCE} -gt ${INTERVAL} ]
then
  setsid $PUPPET_START --immediate --sudo --verbose --timeout 2m 2>&1 | log_puppet &
fi
